【问题标题】:Calculate total number of values per day with pandas用 pandas 计算每天的值总数
【发布时间】:2019-03-05 15:40:47
【问题描述】:

我有以下数据框

       UNIT  C/A   DATETIME                TOTAL COUNTs
       R248  HOO7  2018-03-03 03:00:00     139.0
                   2018-03-03 07:00:00     927.0
                   2018-03-04 11:00:00    1946.0
                   2018-03-05 07:00:00    1330.0
                   2018-03-05 11:00:00    2358.0

我想计算每天“TOTAL COUNTS”的总和。所以我希望数据框看起来像这样:

        UNIT  C/A   DATETIME     TOTAL COUNTs
       R248  HOO7  2018-03-03    1066
                   2018-03-04    1946
                   2018-03-05    3688

我阅读了我必须将此数据帧的索引设置为“日期时间”索引,然后使用 .resample,但我不知道该怎么做。

【问题讨论】:

  • print (df.info()) 是什么?

标签: python python-3.x pandas datetime


【解决方案1】:

如果 3 个级别使用 MultiIndex 使用 floordate 并聚合 sum

dates = df.index.get_level_values('DATETIME').floor('D')

或者:

dates = pd.Series(df.index.get_level_values('DATETIME').date, name='DATETIME', index=df.index)

如果列DATETIME:

dates = df['DATETIME'.dt.floor('D')
dates = df['DATETIME'].dt.date

df = df.groupby(['UNIT','C/A', dates]).sum().reset_index()
print (df)
   UNIT   C/A   DATETIME  TOTAL COUNTs
0  R248  HOO7 2018-03-03        1066.0
1  R248  HOO7 2018-03-04        1946.0
2  R248  HOO7 2018-03-05        3688.0

resample 的解决方案:

df = df.set_index('DATETIME').groupby(['UNIT','C/A']).resample('D').sum().reset_index()

或者:

df = df.groupby(['UNIT','C/A', pd.Grouper(key='DATETIME', freq='D')]).sum().reset_index()

print (df)
   UNIT   C/A   DATETIME  TOTAL COUNTs
0  R248  HOO7 2018-03-03        1066.0
1  R248  HOO7 2018-03-04        1946.0
2  R248  HOO7 2018-03-05        3688.0

【讨论】:

    【解决方案2】:

    试试这个:

    df.groupby(df.DATETIME.dt.date)["TOTAL COUNTs"].sum()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      相关资源
      最近更新 更多