问题描述
我想为数据框中的每一列计算均值。 假设我有一个像这样的数据框:
import pandas as pd
df = pd.DataFrame({'A':[1,2,3],
'B':[4,4,4],
'C':[7,8,9],
'D':[3,3,3]})
print(df)
A B C D
0 1 4 7 3
1 2 4 8 3
2 3 4 9 3
我想把平均值设为[2,1,8,1]。 因为对于列B和D仅具有唯一值,所以我希望均值是1,而不是唯一值。
我该怎么做,我想我应该写一个函数,然后按条件应用于每列,但是我不知道该怎么做。
希望有人能帮助我。
1楼
那是..想要的一件奇怪的事。 :-)我建议不要将其称为“均值”,这只会使人感到困惑。
可能最简单的方法是计算实际均值,然后用覆盖率1替换唯一列。
In [226]: df.mean().where(df.nunique() > 1, 1)
Out[226]:
A 2.0
B 1.0
C 8.0
D 1.0
dtype: float64