如何去除df中的重复项?df只有1列。在这种情况下,"60,25“和"25,60”是一对重复的行。输出应该是新的df。对于每一对重复的行,保留的行格式为"A,B“,其中A< B,删除的行应为A>B。在这种情况下,应保留"25,60”和"80,123“。对于唯一行,它应该保持不变。

发布于 2018-08-27 09:15:10
IIUC,结合使用get_dummies和duplicated
df[~df.A.str.get_dummies(sep=',').duplicated()]
Out[956]:
A
0 A,C
1 A,B
4 X,Y,Z数据输入
df
Out[957]:
A
0 A,C
1 A,B
2 C,A
3 B,A
4 X,Y,Z
5 Z,Y,X更新操作将问题完全更改为不同的问题
newdf=df.A.str.get_dummies(sep=',')
newdf[~newdf.duplicated()].dot(newdf.columns+',').str[:-1]
Out[976]:
0 25,60
1 123,37
dtype: object发布于 2018-08-27 10:49:58
我会做一系列的事情。
pandas.Series.str.split to split by commasapply(frozenset) to get a hashable以便我可以在keep='last'中使用hashable
df[~df.A.str.split(',').apply(frozenset).duplicated(keep='last')]
A
1 123,17
3 80,123
4 25,60
5 25,42正在处理评论
df.A.apply(
lambda x: tuple(sorted(map(int, x.split(','))))
).drop_duplicates().apply(
lambda x: ','.join(map(str, x))
)
0 25,60
1 17,123
2 80,123
5 25,42
Name: A, dtype: object设置
df = pd.DataFrame(dict(
A='60,25 123,17 123,80 80,123 25,60 25,42'.split()
))https://stackoverflow.com/questions/52031428
复制相似问题