我现在遇到了在 pandas 中计算组加权平均值的问题。
假设数据框有 3 列“Group”、“A”和“W”。如果我想找到 A 的组均值,我会这样做
df.groupby(['Group'])['A'].mean()
或者如果我需要总体加权平均值我可以做
np.average(df.A,weight=df.W)
但是我可以计算每个组的加权平均值吗?
谢谢!
最佳答案
您可以将 groupby/apply 与自定义 (lambda) 函数一起使用:
import numpy as np
import pandas as pd
np.random.seed(2015)
N = 10000
df = pd.DataFrame(np.random.randint(10, size=(N,3)), columns=['Group', 'A', 'W'])
result = df.groupby(['Group']).apply(lambda x: np.average(x['A'], weights=x['W']))
print(result)
产量
Group
0 4.422978
1 4.557099
2 4.517336
3 4.535559
4 4.526898
5 4.697104
6 4.580512
7 4.598492
8 4.388965
9 4.424191
dtype: float64
关于python - 在 groupby 或任何带参数的聚合函数中使用 np.average,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31663165/