将一个函数应用于groupby对象组中一个列的有效方法是什么?

时间:2017-11-30 21:51:14

标签: python performance pandas pandas-groupby

我有一个包含500K行的数据帧。

我有以下专栏:

               Symbol      Open      High       Low    Close    Volume

Date                                                                    
01-Aug-2017    AADR   49.8800    49.8800    49.8800    49.8800     790
02-Aug-2017    AADR   49.8432    49.8432    49.8432    49.8432     684

我在数据帧中有2071个符号:

>>> grouped = df.groupby('Symbol')

>>> len(grouped)

 2071

我想在一列上应用滚动均值函数(即关闭) 在每个组中添加平均值作为现有数据框中的额外列。

我相信我可以做到:

results = {}
for name, group in grouped:
    ma_col = group[1].Close.ewm(span=10, min_periods=10).mean()
    results[name] = ma_col    

这给了我结果字典,然后我可以将其变成DataFrame来使用。

是否有更高效(更好的表现)方式来做同样的事情?

1 个答案:

答案 0 :(得分:2)

您可以使用groupby + transform -

df.groupby('Symbol').Close.transform(lambda x: x.ewm(span=10, min_periods=10).mean())