我需要基于数据帧中的多个列来标识重复的行。
其余列(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]

08-04 02:42