3 回答
TA貢獻1815條經驗 獲得超13個贊
嘗試使用 pd.Grouper 和 freq = 'MS' 進行分組:
df.groupby(pd.Grouper(freq='MS', key='date')).sum().reset_index()
輸出:
date value_1 value_2
0 2018-07-01 50 3
1 2018-08-01 90 6
2 2018-09-01 80 3
3 2018-10-01 40 4
而且,如果您想恢復點日期格式,可以使用以下命令:
df_out = df.groupby(pd.Grouper(freq='MS', key='date')).sum().reset_index()
df_out['date'] = df_out['date'].dt.strftime('%Y.%m.%d')
df_out
輸出:
date value_1 value_2
0 2018.07.01 50 3
1 2018.08.01 90 6
2 2018.09.01 80 3
3 2018.10.01 40 4
TA貢獻1831條經驗 獲得超4個贊
做
df.date=pd.to_datetime(df.date)
df.groupby(df.date+pd.offsets.MonthBegin(-1)).sum()
Out[171]:
value_1 value_2
date
2018-07-01 50 3
2018-08-01 90 6
2018-09-01 80 3
2018-10-01 40 4
TA貢獻1886條經驗 獲得超2個贊
如果您將日期作為索引,則就像重新采樣一樣簡單。
df.resample('MS').sum()
如果您還沒有將其作為索引,則可以set_index.
df.set_index('date').resample('MS').sum()
兩者都給你
value_1 value_2
date
2018-07-01 50 3
2018-08-01 90 6
2018-09-01 80 3
2018-10-01 40 4
添加回答
舉報
