【发布时间】:2019-06-08 13:26:15
【问题描述】:
我正在尝试在 pandas 中使用带有 groupby 的自定义函数。我发现使用apply 可以让我通过以下方式做到这一点:
(从两组计算新平均值的示例)
import pandas as pd
def newAvg(x):
x['cm'] = x['count']*x['mean']
sCount = x['count'].sum()
sMean = x['cm'].sum()
return sMean/sCount
data = [['A', 4, 2.5], ['A', 3, 6], ['B', 4, 9.5], ['B', 3, 13]]
df = pd.DataFrame(data, columns=['pool', 'count', 'mean'])
df_gb = df.groupby(['pool']).apply(newAvg)
是否可以将其集成到agg 函数中?沿着这些思路:
df.groupby(['pool']).agg({'count': sum, ['count', 'mean']: apply(newAvg)})
【问题讨论】:
标签: python pandas aggregate pandas-groupby