熊猫mean()导致INF?

时间:2020-09-14 22:00:30

标签: pandas

df['C'] =   df['A'] / df['B']
df['C'].mean() 

这将返回有效值。

但是,

df['D'] =   df['B'] / df['A']
df['D'].mean() 

返回信息。

对为什么有任何想法? “ inf”在这里是什么意思?

我下载了文件并在excel中计算了“ D”的平均值。它返回一个有效值。没有无效的“ D”值。

1 个答案:

答案 0 :(得分:1)

在一行中有一个零,这会造成问题。考虑示例:

df = pd.DataFrame({'A' : [1,2,3,0],
                   'B' : [2,3,4,5]})
df['C'] = df['B'] / df['A']
df['D'] = df['A'] / df['B']
df
Out[1]: 
   A  B         C         D
0  1  2  2.000000  0.500000
1  2  3  1.500000  0.666667
2  3  4  1.333333  0.750000
3  0  5       inf  0.000000

因为df['A']的值为零,所以当您进行计算df['C'] = df['B'] / df['A']时,inf = {{1 }}。分母为0时,这在数学上是可以预期的。但是,当分子上为0时,数学上您希望得到的结果为0。

因此,当您采用多个值A和一个值= 0时,均值将为mean()。这也是数学上的预期。解决方案是将inf的值替换为inf

inf

现在,您准备好获取每一列的平均值。完整代码如下:

np.nan