【问题标题】:Pandas merge removing duplicate rows熊猫合并删除重复行
【发布时间】:2017-08-09 20:52:29
【问题描述】:

我有一只熊猫 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

【问题讨论】:

  • 您是从头开始构建 DataFrame,还是这只是一个示例,您必须使用现有框架?
  • @JonClements 这只是一个例子,我有一个类似的数据框,列更多。

标签: python pandas


【解决方案1】:

您可以在一个语句中完成所有操作,但是,它仍然很像您正在做的,使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 2020-06-11
    • 1970-01-01
    • 2021-09-05
    • 2013-10-28
    • 1970-01-01
    • 2016-02-11
    相关资源
    最近更新 更多