У меня есть pandas DataFrame формы:
import pandas as pd
df = pd.DataFrame({
'a': [1,2,3,4,5,6],
'b': [0,1,0,1,0,1]
})
Я хочу сгруппировать данные по значению «b» и добавить новый столбец «c», который содержит скользящую сумму «a» для каждой группы, затем я хочу снова объединить все группы в несгруппированный DataFrame, который содержит « столбец с'. Я дошел до:
for i, group in df.groupby('b'):
group['c'] = group.a.rolling(
window=2,
min_periods=1,
center=False
).sum()
Но есть несколько проблем с этим подходом:
Работа с каждой группой с использованием цикла for кажется медленной для большого DataFrame (например, моих реальных данных).
Я не могу найти элегантный способ сохранить столбец «c» для каждой группы и добавить его обратно в исходный DataFrame. Я мог бы добавить c для каждой группы в массив, заархивировать его с помощью аналогичного массива индексов и т. д., но это кажется очень хакерским. Есть ли встроенный метод панд, который мне здесь не хватает?