【问题标题】:How can I Group By Month, Day from a Date field using Python/Pandas如何使用 Python/Pandas 从日期字段按月、日分组
【发布时间】:2017-12-08 08:21:29
【问题描述】:

我有一个数据框 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  |

我需要将上述数据按月分组,然后按天分组以得到输出:

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

我试过这段代码,但它不起作用:

df.groupby(month('date'), day('date')).agg({'Revenue': 'sum', 'Cost': 'sum' })

我只想使用 Pandas 或 Numpy,不想使用其他库

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    让我们使用set_indexsumlevel 参数:

    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()
    

    输出:

      Month  Day  Revenue  Cost
    0   Jun    1      600   120
    1   Jun   20      400    80
    2   May   21      500   100
    

    【讨论】:

    • 只想给你那10K!
    • @parfait。谢谢!
    猜你喜欢
    • 2017-12-08
    • 1970-01-01
    • 2020-07-02
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    相关资源
    最近更新 更多