【问题标题】:Group Dataframe with datetime column by weekday按工作日将数据框与日期时间列分组
【发布时间】:2023-03-19 11:14:01
【问题描述】:

我有一个数据框,其中一列采用日期时间格式,其他列采用整数和浮点数。我想按第一列的工作日对数据框进行分组。将添加其他列。

print (df)
Day               Butter Bread Coffee
2019-07-01 00:00:00 2   2   4
2019-07-01 00:00:00 1  2   1
2019-07-02 00:00:00 5  4   8

基本上结果会在某个时候相似:

print (df)
Day Butter Bread Coffee
Monday 3   4   5
Tuesday 5  4   8

我很灵活,如果它准确地说是星期一,或者一周的第一天是 MO 或 01,只要可以看到在星期一、星期二、星期三、星期四、星期五、星期六和星期日进行了哪些消费。

【问题讨论】:

  • 给定日期时间中的Day,您可以使用df['Day'].dt.day_name 来获取日期名称。看到这个doc
  • df.groupby(df.Day.dt.day_name()).sum().reset_index()

标签: python python-3.x pandas dataframe


【解决方案1】:

尝试使用 .dt.day_name() 和 groupby(),sum()

df = pd.DataFrame(data={'day':['2019-07-01 00:00:00','2019-07-01 00:00:00','2019-07-02 00:00:00'],
                       'butter':[2,1,5],
                       'bread':[2,2,4],
                       'coffee':[4,1,8]}) 
df['day'] = pd.to_datetime(df['day']).dt.day_name()
df.groupby(['day'],as_index=False).sum()

     day    butter  bread   coffee
0   Monday      3      4    5
1   Tuesday     5      4    8

【讨论】:

    【解决方案2】:

    您应该将“Day”转换为 datetime 类型,然后您可以提取星期几并汇总其余列:

    import pandas as pd
    df['Day'] = pd.to_datetime(df['Day'])
    df.groupby(df['Day'].dt.day_name()).sum()
    

    【讨论】:

      猜你喜欢
      • 2017-10-17
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      • 2021-09-16
      • 2017-08-19
      • 2017-01-16
      • 1970-01-01
      相关资源
      最近更新 更多