问题描述
我想为数据框中的每一列计算均值。 假设我有一个像这样的数据框:
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