Python 如何按条件计算每列的平均值
我想计算数据帧中每列的平均值。 假设我有这样一个数据帧:Python 如何按条件计算每列的平均值,python,pandas,numpy,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
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替换唯一列
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
那是。。想要一件奇怪的东西。:-)我建议不要称之为“卑鄙”,那样只会让人困惑 可能最简单的方法是计算实际平均值,然后用覆盖值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
您可以执行
df.loc[:,df.agg('nunique')>1].mean().reindex(df.columns,fill_value=1)
。。。但我怀疑这是最有效的方法。(所以我会让其他人指出一个更好的方法,不要让自己太尴尬,让它成为一个正确的答案)你可以做df.loc[:,df.agg('nunique')>1].mean().reindex(df.columns,fill\u value=1)
。。。但我怀疑这是最有效的方法。(因此,我会让其他人指出一个更好的方法,不要让自己太尴尬,让它成为一个正确的答案)