我有以下数据框
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,但我不确定如何这样做。
答案 0 :(得分:2)
如果3个级别MultiIndex
使用floor
或date
并汇总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()