数据框(pandas)有两列。需要删除第1列中的条目没有重复项的行。
示例数据:
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
换句话说,需要从第1列中删除所有单次出现(暗示唯一)的值。在python(~50k行)中实现此目的的最快方法是什么?
答案 0 :(得分:2)
一种方法是使用duplicated()方法
df.duplicated('c1')
默认标记除了第一个,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
答案 1 :(得分:1)
这是一种方法:假设数据帧为'd',列名为'a'和'b'。首先,获取“a”中每个唯一值的出现次数:
e = d['a'].value_counts()
然后获取大于1的值列表,并返回第一列是该列表成员的行:
d[d['a'].isin(e[e>1].index)]