2017-04-19 61 views
1

我有数据框。这是其中的一部分熊猫:数据框中的联合重复字符串

 member_id   event_time      event_path event_duration \ 
0  2333678 2016-12-27 04:17:16 youtube.com/watch?v=w5ZIb05NO58 12 
1  2333678 2016-12-27 04:17:26 youtube.com/watch?v=w5ZIb05NO58  12 
2  2333678 2016-12-27 04:17:36 youtube.com/watch?v=w5ZIb05NO58 10 
3  2333678 2016-12-27 04:17:40 youtube.com/watch?v=w5ZIb05NO58 35 
4  5611206 2016-12-30 17:16:01 youtube.com/watch?v=qZrQWA5IsKA 35 
5  5611206 2016-12-30 17:16:10 youtube.com/watch?v=qZrQWA5IsKA 12 
6  5611206 2016-12-30 17:16:27 youtube.com/watch?v=6YM5UhnElcE 10 
7  5611206 2016-12-30 17:16:37 youtube.com/watch?v=6YM5UhnElcE 10 
8  5611206 2016-12-30 17:16:47 youtube.com/watch?v=6YM5UhnElcE 10 

欲望输出

 member_id   event_time      event_path event_duration 
0  2333678 2016-12-27 04:17:16 youtube.com/watch?v=w5ZIb05NO58 69  
4  5611206 2016-12-30 17:16:01 youtube.com/watch?v=qZrQWA5IsKA 47  
6  5611206 2016-12-30 17:16:27 youtube.com/watch?v=6YM5UhnElcE 30  

我用

g = (df.event_path != df.event_path.shift()).cumsum() 
df = (df.groupby([df.member_id, df.event_time, g], sort=False).agg({'event_duration':'sum', 'event_path':'first'}) 
    .reset_index(level='event_path', drop=True) 
    .reset_index() 
    .reindex(columns=df.columns)) 

不过,这并不Concat的所有字符串。

+0

你有不同的'event_time'。你想分组中的第一个? – m0nhawk

回答

1

如果你想为每个组从event_time您可以使用下面的第一个项目(你还用它进行event_path):

>>> df.groupby([df.member_id, df.event_path]).agg({'event_duration':'sum', 'event_time': 'first'}).reset_index().reindex(columns=df.columns) 

    member_id event_time      event_path event_duration 
0 2016-12-27 04:17:16 youtube.com/watch?v=w5ZIb05NO58    69 
1 2016-12-30 17:16:27 youtube.com/watch?v=6YM5UhnElcE    30 
2 2016-12-30 17:16:01 youtube.com/watch?v=qZrQWA5IsKA    47 
1
df.groupby(['member_id','event_path']).agg({'event_time':'min','event_duration':'sum'}).reset_index() 

输出:

member_id      event_path   event_time \ 
0 2333678 youtube.com/watch?v=w5ZIb05NO58 2016-12-27 04:17:16 
1 5611206 youtube.com/watch?v=6YM5UhnElcE 2016-12-30 17:16:27 
2 5611206 youtube.com/watch?v=qZrQWA5IsKA 2016-12-30 17:16:01 

    event_duration 
0    69 
1    30 
2    47 
相关问题