大熊猫从累积的多类别列计算每日总计

时间:2020-04-27 18:04:41

标签: python pandas dataframe

我有一个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}})

结果: enter image description here

我知道如何根据累计数字计算每日总计:

df['dayTotal'] = df['col3'].diff().fillna(df['col3'])

但是我不知道是如何基于col2中的值获得总数的。我可以sort_values,但需要在col2中的每个新值处重置累积的每日日数。在该示例中,只有“ a”和“ b”值,但是我的真实数据有500多个类别。

理想的结果:

enter image description here

1 个答案:

答案 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