遇到这个我无法修复的问题,我有一个大型数据框(下面发布的样本),有5列。我想为每一行计算Std和mean。不知怎的,它一直在回NaN。
interface{}
我已检查过所有月份列和 CellName Apr-2018 Feb-2018 Jan-2018 Mar-2018 mean
0 BDG652ML_KPBENDULML1 9.450841 24.119474 27.091426 17.527006 NaN
1 BDG652ML_KPBENDULML2 15.917555 10.548731 11.019208 14.592388 NaN
2 BDG652ML_KPBENDULML3 24.957360 21.122519 21.197216 24.950549 NaN
float64
给出:
df.types
我知道我不需要排除细胞柱,我可以通过使用
轻松获得 CellName object
Apr-2018 float64
Feb-2018 float64
Jan-2018 float64
Mar-2018 float64
dtype: object
我也尝试过:
df['mean'] = df.mean(numeric_only =True)
但仍然没有。与Std相同的行为。
关于我可能做错的任何提示?
答案 0 :(得分:2)
每行axis=1
使用参数mean
,numeric_only
参数似乎应该省略:
df['mean'] = df.mean(axis=1)
#df['mean'] = df.mean(numeric_only=True, axis=1)
print (df)
CellName Apr-2018 Feb-2018 Jan-2018 Mar-2018 mean
0 BDG652ML_KPBENDULML1 9.450841 24.119474 27.091426 17.527006 19.547187
1 BDG652ML_KPBENDULML2 15.917555 10.548731 11.019208 14.592388 13.019470
2 BDG652ML_KPBENDULML3 24.957360 21.122519 21.197216 24.950549 23.056911
df['std'] = df.std(axis=1)
print (df)
CellName Apr-2018 Feb-2018 Jan-2018 Mar-2018 std
0 BDG652ML_KPBENDULML1 9.450841 24.119474 27.091426 17.527006 7.828126
1 BDG652ML_KPBENDULML2 15.917555 10.548731 11.019208 14.592388 2.644401
2 BDG652ML_KPBENDULML3 24.957360 21.122519 21.197216 24.950549 2.190731
如果要添加两个列assign
是您的朋友,因为mean
或std
只需要从原始数字列计算:
df = df.assign(std=df.std(axis=1), mean=df.mean(axis=1))
print (df)
CellName Apr-2018 Feb-2018 Jan-2018 Mar-2018 std \
0 BDG652ML_KPBENDULML1 9.450841 24.119474 27.091426 17.527006 7.828126
1 BDG652ML_KPBENDULML2 15.917555 10.548731 11.019208 14.592388 2.644401
2 BDG652ML_KPBENDULML3 24.957360 21.122519 21.197216 24.950549 2.190731
mean
0 19.547187
1 13.019470
2 23.056911