删除非重复条目

zen*_*zen 6 python pandas

数据框(pandas)有两列。需要删除第一列中的条目没有重复的那些行。

示例数据:

1 A
1 B
2 A
3 D
2 C
4 E
4 E

预期输出

1 A
1 B
2 A
2 C
4 E
4 E

换句话说,需要从第一列中删除所有单次出现(暗示唯一)的值。在python(~50k行)中实现这一目标的最快方法是什么?

Zer*_*ero 5

一种方法是使用duplicated()方法

df.duplicated('c1')default 标志除第一个之外的所有标志,并take_last=True提供其他标志。

In [600]: df[df.duplicated('c1') | df.duplicated('c1', take_last=True)]
Out[600]:
   c1 c2
0   1  A
1   1  B
2   2  A
4   2  C
5   4  E
6   4  E
Run Code Online (Sandbox Code Playgroud)

  • 在较新版本的 Pandas 中,必须使用 `keep='last'` 而不是 `take_last=True`。 (3认同)
  • 这里对 pandas 来说相对较新:如果我理解正确,这意味着选择由重复方法标记为 true 的所有列。并且您使用“或”符号来确保不会删除每个重复项的第一次或最后一次出现,对吧?因此,在最新版本的 pandas 中,仅使用 ``df[df.duplicated('c1', keep=False)]``` 不是最有意义吗?来自文档:````False:将所有重复项标记为 True。```` (3认同)