根据其他列汇总pandas数据框中的列

时间:2015-10-09 21:24:51

标签: python pandas

我有一个小数据框tbl:

         CatAreaSqKm  CatMean  CatPctFull  CatCount       CatSum  COMID                                                              
1861888       0.2439   0.0000    0.000000         0     0.000000   
1862004       0.4050  27.9765   18.222222        82  2294.072964   
1862014       0.0720  27.9765   28.750000        23   643.459490   

         UpCatAreaSqKm  UpCatMean  UpCatPctFull  UpCatCount      UpCatSum  
COMID                                                                      
1861888    105360.5349  29.177349     97.901832   114610993  3.344045e+09  
1862004    105445.4517  29.174944     97.902537   114704191  3.346488e+09  
1862014    105360.2127  29.177349     97.902093   114610948  3.344044e+09 

我想做以下操作:

tbl['WsMean'] = ((tbl.CatSum + tbl.UpCatSum)/(tbl.CatCount + tbl.UpCatCount))

但是,如果我为CatCount + UpCatCount得到一个零,我将除以零,所以对于那个特定的行,我想设置' WsMean'零,但对于其他人,我希望计算上面的陈述计算的值。我怎样才能做到这一点?我只能想到一个声明:

tbl['WsMean'] = 0

但是这将覆盖表中的所有记录0。

有什么想法吗?感谢

1 个答案:

答案 0 :(得分:1)

除以零会产生NaN值。您可以使用fillna(0)用零替换NaN:

tbl['WsMean'] = ((tbl.CatSum + tbl.UpCatSum)/(tbl.CatCount + tbl.UpCatCount)).fillna(0)