熊猫:根据索引+列对的数量选择行

时间:2019-10-07 09:35:59

标签: python pandas dataframe

我有一个这样的数据框:

id    company    ......
111   A
222   B
333   B
111   E
444   C
555   C
555   C
333   A
111   A
222   D
444   C

,我想让id在同一company中至少出现两次的行。因此结果将是:

id    company    .......
111   A
444   C
555   C
555   C
111   A
444   C

尽管id 222曾经有两次与另一家公司在一起,所以将其删除。 id 111在那儿有3次,但同一company只有两次。因此,仅保留了该company中的2行。等等。

同一家公司的行可能会发生两次以上。

有一些stackoverflow问题,这些问题涉及选择一个值出现多次的行(例如How to select rows in Pandas dataframe where value appears more than once),但是我找不到任何处理索引+列对出现多次的行。

1 个答案:

答案 0 :(得分:1)

使用duplicated

import pandas as pd

df = pd.DataFrame({'id': {0: 111, 1: 222, 2: 333, 3: 111, 4: 444, 5: 555, 6: 555, 7: 333, 8: 111, 9: 222, 10: 444},
                   'company': {0: 'A', 1: 'B', 2: 'B', 3: 'E', 4: 'C', 5: 'C', 6: 'C', 7: 'A', 8: 'A', 9: 'D', 10: 'C'}})

print (df[df.duplicated(subset=["id","company"],keep=False)])

#
     id company
0   111       A
4   444       C
5   555       C
6   555       C
8   111       A
10  444       C