计算熊猫每天的价值总数

时间:2018-09-30 07:33:07

标签: python python-3.x pandas datetime

我有以下数据框

       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

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

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

我读到我必须将此数据帧的索引设置为“ datetime”索引,然后使用.resample,但我不确定如何这样做。

2 个答案:

答案 0 :(得分:2)

如果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

答案 1 :(得分:0)

尝试一下:

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