如何使用 Python/Pandas 从日期字段按月、日分组

Sym*_*ony 5 python pandas

我有一个数据框 df 如下:

| date      | Revenue | Cost |
|-----------|---------|------|
| 6/1/2017  | 100     | 20   |
| 5/21/2017 | 200     | 40   |
| 5/21/2017 | 300     | 60   |
| 6/20/2017 | 400     | 80   |
| 6/1/2017  | 500     | 100  |
Run Code Online (Sandbox Code Playgroud)

我需要按月然后按天对上述数据进行分组以获得输出:

| Month | Day | SUM(Revenue) | SUM(Cost) |
|-------|-----|--------------|-----------|
| May   | 21  | 500          | 100       |
| June  | 1   | 600          | 120       |
| June  | 20  | 400          | 80        |
Run Code Online (Sandbox Code Playgroud)

我试过这段代码,但没有用:

df.groupby(month('date'), day('date')).agg({'Revenue': 'sum', 'Cost': 'sum' })
Run Code Online (Sandbox Code Playgroud)

我只想使用 Pandas 或 Numpy 而没有额外的库

Sco*_*ton 5

让我们使用set_indexsum参数level

df['date'] = pd.to_datetime(df['date'])
df['Month'] = df['date'].dt.strftime('%b')
df['Day'] = df['date'].dt.day   
df.set_index(['Month','Day']).sum(level=[0,1]).reset_index()
Run Code Online (Sandbox Code Playgroud)

输出:

  Month  Day  Revenue  Cost
0   Jun    1      600   120
1   Jun   20      400    80
2   May   21      500   100
Run Code Online (Sandbox Code Playgroud)