我正在 Pandas 中做一个分组来组合数据,但我只想在列中包含唯一元素。
我目前正在运行:
df.groupby(['Col1','Col2'])['Grade'].transform(lambda x: ','.join(x))
这将产生:
Col1 Col2 Grade
1 1 A-,A-,B+
1 2 A,B,B-,B-
2 1 B,C,C,D
...
如何仅对成绩列的唯一元素执行联接,以便我的输出如下所示:
Col1 Col2 Grade
1 1 A-,B+
1 2 A,B,B-
2 1 B,C,D
...
使用set
删除聚合中的重复项:
df.groupby(['Col1','Col2'])['Grade'].transform(lambda x: ','.join(set(x)))
或者要保持正确的顺序,请使用np.unique
:
df.groupby(['Col1','Col2'])['Grade'].transform(lambda x: ','.join(np.unique(x)))