Python-基于两列组合删除数据框中的重复项?

我在Python中有一个包含3列的数据框:


Name1 Name2 Value

Juan  Ale   1

Ale   Juan  1

并希望消除基于Name1和Name2列组合的重复项。


在我的示例中,两行相等(但是顺序不同),我想删除第二行并保留第一行,因此最终结果应为:


Name1 Name2 Value

Juan  Ale   1

任何想法将不胜感激!


动漫人物
浏览 1116回答 3
3回答

手掌心

您可以转换为frozenset并使用pd.DataFrame.duplicated。res = df[~df[['Name1', 'Name2']].apply(frozenset, axis=1).duplicated()]print(res)  Name1 Name2  Value0  Juan   Ale      1frozenset是必需的,而不是set因为duplicated使用哈希检查重复项。列的缩放比行的缩放更好。对于大量行,请使用@Wen的基于排序的算法。

明月笑刀无情

通过np.sort与duplicateddf[pd.DataFrame(np.sort(df[['Name1','Name2']].values,1)).duplicated()]Out[614]:   Name1 Name2  Value1   Ale  Juan      1性能df=pd.concat([df]*100000)%timeit df[pd.DataFrame(np.sort(df[['Name1','Name2']].values,1)).duplicated()]10 loops, best of 3: 69.3 ms per loop%timeit df[~df[['Name1', 'Name2']].apply(frozenset, axis=1).duplicated()]1 loop, best of 3: 3.72 s per loop
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python