df['C'] = df['A'] / df['B']
df['C'].mean()
这将返回有效值。
但是,
df['D'] = df['B'] / df['A']
df['D'].mean()
返回信息。
对为什么有任何想法? “ inf”在这里是什么意思?
我下载了文件并在excel中计算了“ D”的平均值。它返回一个有效值。没有无效的“ D”值。
答案 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