如何获取 pandas 中的分组累计时长?

How to get grouped cumulative duration in pandas?

我有以下数据:

id encounter_key datetime
1 111 2019-04-14
1 111 2019-04-14
1 111 2019-07-18
1 122 2019-09-02
2 211 2019-10-03
2 211 2020-10-03

我想找到累计持续时间,按 idencounter_key 分组以实现以下结果:

id encounter_key datetime cum_duration_days
1 111 2019-04-14 0
1 111 2019-04-14 0
1 111 2019-07-18 95
1 122 2019-09-02 0
2 211 2019-10-03 0
2 211 2020-10-03 366

我试过 df.groupby(['datetime']).apply( ... ) 等等,但似乎没有任何效果。提前致谢。

我认为这应该可行

df['cum_duration_days']=df.groupby(['id','encounter_key'])['datetime'].diff()/ np.timedelta64(1, 'D')
df['cum_duration_days'].fillna(0)

但是@enke 是对的,除非您没有显示 encounter_key=211 /id=2 ...[=11 的所有行,否则所需的输出似乎在“31”上有错误=]