我有一个这样的数据框:
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),但是我找不到任何处理索引+列对出现多次的行。
答案 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