如何按条件计算每列的均值

时间:2018-09-15 16:33:41

标签: python pandas numpy

我想计算数据框中每一列的均值。 假设我有一个像这样的数据框:

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 个答案:

答案 0 :(得分:2)

那是..一个奇怪的事情。 :-)我建议不要将其称为“平均”,这只会使人感到困惑。

最简单的方法可能是计算真实均值,然后用覆盖率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