我有一个概念上看起来像这样的数据框:
ID SUM Stime Etime
3 10.0 18:00:00 18:09:59
2 12.0 18:15:00 18:26:59
3 3.0 18:36:00 18:38:59
4 3.0 18:36:00 18:38:59
5 59.0 18:00:00 18:58:59
12 10.0 17:00:00 17:09:59
12 16.0 18:24:00 18:39:59
7 16.0 18:24:00 18:39:59
8 19.0 18:40:00 18:58:59
12 19.0 18:40:00 18:58:59
10 19.0 18:40:00 18:58:59
11 3.0 18:03:00 18:05:59
12 11.0 18:59:00 18:09:59
Stime和Etime cols来自日期时间类型。
SUM是Stime和Etime之间的分钟数。
我需要做的是更新表格,如果对于某个人(ID),Stime恰好在结束时间之后 - 我将单位2行,我将更新SUM。
例如,对于ID=12
,第一个Etime是18:39:59
并且第二个Stime是18:40:00
- 它在18:39:59之后,并且第二个Etime是18:58:59
而第三个Stime是18:59:00
- 它在18:58之后出现:59 - 所以我想整理3行并将此人的SUM更新为46
(16 + 19 + 11)。
我尝试使用merge
- 但问题在于它正确地合并了2行而不是3行或更多行。
答案 0 :(得分:0)
如果不合适,我能否回复一下你会回复你?
答案 1 :(得分:0)
d = {'ID' : [1, 2, 3,12, 4,12,5,12],'SUM' : [4, 3, 2, 16,1,19,2,11]}
df =pd.DataFrame(d)
>>> df
ID SUM
0 1 4
1 2 3
2 3 2
3 12 16
4 4 1
5 12 19
6 5 2
7 12 11
df.groupby(['ID']).sum()
SUM
ID
1 4
2 3
3 2
4 1
5 2
12 46