如何获取 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
我想找到累计持续时间,按 id
和 encounter_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”上有错误=]
我有以下数据:
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 |
我想找到累计持续时间,按 id
和 encounter_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”上有错误=]