我想计算浮点数的均值,但我不明白为什么会得到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
我不明白自己做错了什么?
答案 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')
。