目的:
先按照列B分組,再按照列A按月重采樣,求和
df = pd.DataFrame({'A': {0: '2017-12-05', 1: '2018-02-05', 2: '2018-01-05', 3: '2018-01-15'},
'B': {0: 1, 1: 1, 2: 2, 3: 2},
'C': {0: 1, 1: 3, 2: 1, 3: 3},
'D': {0: 1, 1: 2, 2: 3, 3: 4}})
>>> df
# A B C D
# 0 2017-01-05 1 1 1
# 1 2018-02-05 1 3 2
# 2 2018-01-05 2 1 3
# 3 2018-01-15 2 3 4
>>> df.set_index(pd.to_datetime(df.A)).groupby('B').resample('M').sum()
# B C D
# B A
# 1 2017-12-31 1 1 1
# 2018-01-31 0 0 0
# 2018-02-28 1 3 2
# 2 2018-01-31 4 4 7
說明:
- 時間字元串要先 pd.to_datetime() 轉化成時間格式
- resample()出來的結果顯示為當月最後一天
- 同組的resample()結果的時間是相連的(也就是空隙會補全):2017-12 有值,2018-02 有值,是以2018-01填充0