Python pandas - 将表与自身合并

时间:2016-05-30 06:23:38

标签: python pandas

我有一个概念上看起来像这样的数据框:

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行或更多行。

2 个答案:

答案 0 :(得分:0)

贝尼 - 道歉,因为我没有评论的声誉。我很确定我已经回答了你之前的问题,这个问题应该避免需要解决方案:Python Pandas - combining 2 lines from data frame - with condition

如果不合适,我能否回复一下你会回复你?

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