从 groupby 对象将函数应用于组中的一列的有效方法是什么?
what is an efficient way of applying a function to one column in a group from groupby object?
我有一个包含 50 万行的数据框。
我有以下列:
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
来使用。
是否有更有效(性能更好)的方法来做同样的事情?
您可以使用 groupby
+ transform
-
df.groupby('Symbol').Close.transform(lambda x: x.ewm(span=10, min_periods=10).mean())
我有一个包含 50 万行的数据框。
我有以下列:
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
来使用。
是否有更有效(性能更好)的方法来做同样的事情?
您可以使用 groupby
+ transform
-
df.groupby('Symbol').Close.transform(lambda x: x.ewm(span=10, min_periods=10).mean())