【问题标题】:drop duplicates on multiple columns irrespective of the order (a/b == b/a) [duplicate]无论顺序如何,都在多列上删除重复项(a/b == b/a)[重复]
【发布时间】:2022-01-07 21:28:44
【问题描述】:

有没有什么方法可以在不考虑顺序的情况下删除 pandas 中重复对的行?

删除前的数据框 --> 想删除重复的对(黄色)

删除重复后

示例数据:

df = pd.DataFrame({'a': [1,2,1,1,2,2],
                   'b': [2,1,3,4,3,4]
                  })

【问题讨论】:

  • df.groupby(df.apply(frozenset, axis=1)).first()
  • 哇,非常感谢!
  • 不客气。我以为这是重复的,但我找不到,所以我提供了一个答案
  • 感谢@jezrael 鉴于 dup 的低活动性和不理想的答案,不确定我是否应该关闭并在那里发布或保持原样

标签: python pandas duplicates


【解决方案1】:

您可以生成一个frozenset 来为groupby 生成一个普通的无序项,然后为每个组获取first 项:

df.groupby(df.apply(frozenset, axis=1), as_index=False).first()

或在frozenset 系列上使用duplicated

df[~df.apply(frozenset, axis=1).duplicated()]

输出:

   a  b
0  1  2
1  1  3
2  1  4
3  2  3
4  2  4

【讨论】:

  • df[~df.apply(frozenset, axis=1).duplicated()]?
猜你喜欢
  • 2016-02-23
  • 2011-10-20
  • 2012-11-12
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
  • 2020-07-15
  • 1970-01-01
  • 2013-11-07
相关资源
最近更新 更多