大熊猫的漂浮方式给人意想不到的难感

时间:2018-07-07 15:05:20

标签: python pandas

我想计算浮点数的均值,但我不明白为什么会得到NaNs。

print(dfdiameters.head())
  dcyr2     dcyr1
0  4.047077  2.615053
1  4.081549  2.634745
2  4.115329  2.653720
3  4.148420  2.671981
4  4.180827  2.689535

我检查了所有列中都没有NaN。

print (dfdiameters.isna().any())
dcyr2    False
dcyr1    False
dtype: bool

按行计算平均值并创建新列

dfdiameters = dfdiameters.assign(mean=dfdiameters.mean(axis=0))

这是结果

print(dfdiameters.head())
      dcyr2     dcyr1  mean
0  4.047077  2.615053   NaN
1  4.081549  2.634745   NaN
2  4.115329  2.653720   NaN
3  4.148420  2.671981   NaN
4  4.180827  2.689535   NaN

dfdiameters.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 7928 entries, 0 to 7927
Data columns (total 3 columns):
dcyr2    7928 non-null float64
dcyr1    7928 non-null float64
mean     0 non-null float64
dtypes: float64(3)
memory usage: 185.9 KB

我不明白自己做错了什么?

1 个答案:

答案 0 :(得分:1)

您正在计算错误轴的平均值。 df.mean(axis=0计算沿索引(或行)轴的平均值,因此输出类似于

>>> dfdiameters.mean(axis=0)

dcyr2     0.18424
dycr1     0.2432
dtype: float64

然后显然,您不能将其分配给列,因为形状不相同-因此df.assign会退出并为您提供一个NaN列。您想要的是沿列轴的平均值,即dfdiameters.mean(axis=1)或等效的dfdiameters.mean('columns')