Pandas合并删除重复的行

时间:2017-08-09 12:37:04

标签: python pandas

我有一只熊猫df:

df = pd.DataFrame({'id':[1,1,2,2,3],
                   'type':['a','b','c','d','e'],
                   'value':[100,200,300,400,500]})

print(df)  

id  value type
1   100    a
1   200    b
2   300    c
2   400    d
3   500    e

我正在合并相同的数据框以获得

的组合
df2 = pd.merge(df, df,on=['id'])

print(df2)

id  type_x  value_x type_y  value_y
1   a       100        a    100
1   a       100        b    200
1   b       200        a    100
1   b       200        b    200
2   c       300        c    300
2   c       300        d    400
2   d       400        c    300
2   d       400        d    400
3   e       500        e    500

但我不希望列value_x = value_y

例如:

id  type_x  value_x type_y  value_y
1   a       100        a    100

我可以在合并后选择列

df2 = df2[df2.value_x != df2.value_y]

但我不想这样做,

还有其他方法,我可以在合并时将其删除吗?

我的最终输出(所需):

id  type_x  value_x type_y  value_y
1   a       100      b      200
1   b       200      a      100
2   c       300      d      400
2   d       400      c      300

1 个答案:

答案 0 :(得分:3)

你可以在一个声明中完成所有操作,但是,使用query,它仍然很像你正在做的事。

df2 = pd.merge(df, df,on=['id']).query('value_x != value_y')

输出:

   id type_x  value_x type_y  value_y
1   1      a      100      b      200
2   1      b      200      a      100
5   2      c      300      d      400
6   2      d      400      c      300