根据重复的行创建数据框

时间:2017-10-31 18:47:22

标签: python pandas

我有一个pandas数据框,如下所示。

name    type    loc
abc     cew     hyd
abc     cew     mum
bcd     tes     kkr
ced     fge     abe
ced     fge     abe

现在我想创建两个数据框,首先删除所有重复项,然后创建data frames

1st dfcontains rows for columns where name and type are same

name    type    loc
abc     cew     hyd
abc     cew     mum

2nd dfcontains rows for columns where name and type are different

name    type    loc
bcd     tes     kkr
ced     fge     abe

我可以放弃duplicates,如下所示

df = df1.drop_duplicates(subset='name', keep='first')

但是从这里我无法继续前进。答案和解释将是有帮助的

1 个答案:

答案 0 :(得分:2)

所有列首先drop_duplicates,然后使用duplicated进行布局掩码,boolean indexing进行过滤,~用于反转掩码:

df = df.drop_duplicates()
m = df.duplicated(['name','type'], keep=False) 
print (m)
0     True
1     True
2    False
3    False
dtype: bool

df1 = df[m]
print (df1)
  name type  loc
0  abc  cew  hyd
1  abc  cew  mum

df2 = df[~m]
print (df2)
  name type  loc
2  bcd  tes  kkr
3  ced  fge  abe