【问题标题】:remove duplicate rows where one column equals a different column删除一列等于另一列的重复行
【发布时间】:2021-12-01 23:24:29
【问题描述】:

我有一个这样的 df:

d = {'label':['A','B','G','O']
    ,'label2':['C','D','O','Z']}
df = pd.DataFrame(d)
print(df)

  label label2
0   A    C
1   B    D
2   G    O
3   O    Z

我想要做的是摆脱具有 label = label2 的重复行(只保留第一个) 所以我想从上面的df中得到这样的东西:

  label label2
0   A    C
1   B    D
2   G    O

我在下面这样做,但它不起作用

df[~df[['label', 'label2']].apply(frozenset, axis=1).duplicated()]

知道如何解决这个问题吗?

【问题讨论】:

  • “去掉 label = label2 的重复行”是什么意思?从示例中非常不清楚您要做什么。
  • 所以如果一行['label']等于另一行['label2'],只保留第一行
  • 如果你在G O之前有O Z会发生什么
  • 同样的事情。删除第一行

标签: python python-3.x pandas dataframe duplicates


【解决方案1】:

试试这个,对 Seires 使用 .isin 方法:

mask = ~df['label'].isin(df['label2'])
df_output = df[mask]
print(df_output)

输出:

  label label2
0   A    C
1   B    D
2   G    O

【讨论】:

    【解决方案2】:

    您可以使用drop 删除两列之间的重复标签:

    df.drop(df[df['label'].isin(df['label2'])].index, inplace=True)
    print(df)
    
    # Output:
      label label2
    0     A      C
    1     B      D
    2     G      O
    

    【讨论】:

      猜你喜欢
      • 2023-01-19
      • 2014-07-23
      • 2018-12-01
      • 2021-04-21
      • 2012-05-19
      • 2018-05-01
      • 2017-08-10
      • 2022-07-07
      • 1970-01-01
      相关资源
      最近更新 更多