我有一个数据框 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 而没有额外的库
让我们使用set_index和sum参数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)
| 归档时间: |
|
| 查看次数: |
2140 次 |
| 最近记录: |