2 回答

TA貢獻1824條經(jīng)驗 獲得超5個贊
除非我誤解了它似乎比你所做的更簡單。那這個呢?
grp = pd.DataFrame(df.groupby(['subject', 'month', 'f_month'])['value'].sum())
grp['rolling'] = grp.rolling(window=2).mean()
grp
輸出:
value rolling
subject month f_month
a 1 1 30 NaN
2 35 32.5
b 1 1 30 32.5
2 35 32.5

TA貢獻1772條經(jīng)驗 獲得超5個贊
我對喬希的解決方案會有點小心。如果您想按主題分組,則不能使用這樣的滾動功能,因為它會跨主題滾動(即它最終會從主題 A 和 B 中取一個月的平均值,而不是給出您可能更喜歡的空值)。
另一種方法是拆分數(shù)據(jù)幀并單獨運行滾動(我注意到您希望在數(shù)據(jù)幀末尾獲得空值,而您可能希望在前后對數(shù)據(jù)幀進行排序):
for unique_subject in df['subject'].unique():
df_subject = df[df['subject'] == unique_subject]
df_subject['rolling'] = df_subject['value'].rolling(window=2).mean()
print(df_subject) # just to print, you may wanna concatenate these
添加回答
舉報