我有一个df,我必须根据该df来基于累积数来计算每日总计。这是一个样机:
df = pd.DataFrame(data = {'col1': {0: '2020-02-25 20:00:00',
1: '2020-02-25 22:00:00',
2: '2020-02-26 20:00:00',
3: '2020-02-26 23:00:00'},
'col2': {0: 'a', 1: 'b', 2: 'a', 3: 'b'},
'col3': {0: 3, 1: 9, 2: 14, 3: 15}})
我知道如何根据累计数字计算每日总计:
df['dayTotal'] = df['col3'].diff().fillna(df['col3'])
但是我不知道是如何基于col2中的值获得总数的。我可以sort_values
,但需要在col2中的每个新值处重置累积的每日日数。在该示例中,只有“ a”和“ b”值,但是我的真实数据有500多个类别。
理想的结果:
答案 0 :(得分:3)
尝试一下:
df['dayTotal'] = df.sort_values('col1').groupby('col2')['col3'].diff().fillna(df['col3'])
df
输出:
col1 col2 col3 dayTotal
0 2020-02-25 20:00:00 a 3 3.0
1 2020-02-25 22:00:00 b 9 9.0
2 2020-02-26 20:00:00 a 14 11.0
3 2020-02-26 23:00:00 b 15 6.0