Pandas 根据两列合并多行
Pandas merge multiple rows based on two columns
我有一个如下所示的数据框
pid date label age
0 0001 2001-09-24 False 34
1 0001 2006-03-02 True 39
2 0001 2006-03-02 True 39
3 0002 2003-02-07 True 23
4 0002 2004-08-02 True 24
5 0002 2004-08-02 False 24
6 0003 2001-05-25 False 25
7 0003 2001-05-25 False 25
我想根据 pid
和 date
进行聚合,如果多行具有相同的 pid
和 data
,则 age
保持不变相同且 label
= True 如果任何或所有这些行具有 True 标签:
pid date label age
0 0001 2001-09-24 False 34
1 0001 2006-03-02 True 39
3 0002 2003-02-07 True 23
4 0002 2004-08-02 True 24
5 0003 2001-05-25 False 25
我已经尝试了 groupby
但我只能用一列 - pid
并且没有成功用两列。
你的情况 sort_values
+ drop_duplicates
out = df.sort_values('label').drop_duplicates(['pid','date','age'],keep='last').sort_index()
Out[240]:
pid date label age
0 1 2001-09-24 False 34
2 1 2006-03-02 True 39
3 2 2003-02-07 True 23
4 2 2004-08-02 True 24
7 3 2001-05-25 False 25
我有一个如下所示的数据框
pid date label age
0 0001 2001-09-24 False 34
1 0001 2006-03-02 True 39
2 0001 2006-03-02 True 39
3 0002 2003-02-07 True 23
4 0002 2004-08-02 True 24
5 0002 2004-08-02 False 24
6 0003 2001-05-25 False 25
7 0003 2001-05-25 False 25
我想根据 pid
和 date
进行聚合,如果多行具有相同的 pid
和 data
,则 age
保持不变相同且 label
= True 如果任何或所有这些行具有 True 标签:
pid date label age
0 0001 2001-09-24 False 34
1 0001 2006-03-02 True 39
3 0002 2003-02-07 True 23
4 0002 2004-08-02 True 24
5 0003 2001-05-25 False 25
我已经尝试了 groupby
但我只能用一列 - pid
并且没有成功用两列。
你的情况 sort_values
+ drop_duplicates
out = df.sort_values('label').drop_duplicates(['pid','date','age'],keep='last').sort_index()
Out[240]:
pid date label age
0 1 2001-09-24 False 34
2 1 2006-03-02 True 39
3 2 2003-02-07 True 23
4 2 2004-08-02 True 24
7 3 2001-05-25 False 25