为何使用Pandas .divide()方法会生成含NaN的除数列?
问题原因与解决方法
你的问题出在DataFrame间的除法会同时对齐索引和列名:
week1_range的列是Max TemperatureF、Min TemperatureFweek1_mean的列是Mean TemperatureF
两者列名完全不重叠,所以Pandas找不到对应列进行运算,最终返回的结果会合并所有列,且每个位置都是NaN。而标量除法不需要列对齐,所以能正常运行。
解决方法
只需要把 week1_mean 转换成一维的Series,这样Pandas会按索引对齐并广播到 week1_range 的所有列,实现逐元素除法:
方法1:提取对应列作为Series
week1_range.divide(week1_mean['Mean TemperatureF'], axis='rows')
方法2:用squeeze()压缩DataFrame为Series
week1_range / week1_mean.squeeze()
执行后就能得到预期的逐元素除法结果:
Max TemperatureF Min TemperatureF Date 2013-07-01 1.097222 0.916667 2013-07-02 1.135135 0.891892 2013-07-03 1.102564 0.910256 2013-07-04 1.116883 0.909091 2013-07-05 1.131579 0.907895 2013-07-06 1.141026 0.897436 2013-07-07 1.069444 0.972222
内容的提问来源于stack exchange,提问作者Srinivas
相关产品推荐
相关产品推荐

