我需要基于数据帧中的多个列来标识重复的行。
其余列(PKID-具有Integer值)应合并为整数列表。
范例:
输入数据:(行0和1是重复的,但PKID列除外)
Col1 PKID SUBJECT ID
0 A 58305 ABC X1
1 A 57011 ABC X1
2 B 12345 XYZ X1
预期结果 :
Col1 PKID SUBJECT ID
0 A [58305,57011] ABC X1
1 B 12345 XYZ X1
因此,如果除PKID以外的所有列都重复,则将所有条目合并为1,并且PKID值为整数列表。
如何实现呢?
最佳答案
您需要groupby
+ apply
:
df.groupby(df.columns.difference(['PKID']).tolist())\
.PKID.apply(pd.Series.unique).reset_index()
Col1 ID SUBJECT PKID
0 A X1 ABC [58305, 57011]
1 B X1 XYZ [12345]