我有以下数据框
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,但我不确定该怎么做。
最佳答案
如果 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
关于python - 用 pandas 计算每天的值总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52575694/