我正在尝试在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)})