如何在熊猫数据框中实现类似sumifs的功能

时间:2018-07-19 07:49:45

标签: python dataframe data-science

我想添加一列以计算累计正常运行时间。 以下是我的数据框:

original dataframe

我期望的如下:

body_id    active_date  uptime cumulative_uptime
51C00195    2017/1/26   1.18   1.18
51C00232    2017/1/12   0.83   0.83
51C00232    2017/1/19   6.28   7.11
51C00232    2017/1/20   9.35   16.46
51C00232    2017/1/21   3.88   20.34

以上计算可以简单地在Excel中使用sumif实现, 但是在pandas中,我不知道该怎么做。

有人可以帮忙吗?提前谢谢~~

1 个答案:

答案 0 :(得分:0)

我认为cumsum可以做到

df['cumulative_uptime'] = df.groupby('body_id')['uptime'].cumsum()

>>> import pandas as pd
>>>     
... df = pd.DataFrame({'body_id': ['51C00195','51C00232', '51C00232','51C00232','51C00232'],
...     'active_date': ['2017/1/26','2017/1/12','2017/1/19','2017/1/20','2017/1/21'],
...                    'uptime': [1.18,0.83,6.28,9.35,3.88]
...                        })
>>> 
>>> df['cumulative_uptime'] = df.groupby('body_id')['uptime'].cumsum()
>>> 
>>> df
  active_date   body_id  uptime  cumulative_uptime
0   2017/1/26  51C00195    1.18               1.18
1   2017/1/12  51C00232    0.83               0.83
2   2017/1/19  51C00232    6.28               7.11
3   2017/1/20  51C00232    9.35              16.46
4   2017/1/21  51C00232    3.88              20.34
>>>