【问题标题】:Delete duplicate rows with different index values in Pandas在 Pandas 中删除具有不同索引值的重复行
【发布时间】:2020-11-11 03:55:09
【问题描述】:

我有一个包含产品数据的数据框,其中产品 ID 存储为索引值,其他属性存储为列。由于人为错误,有时会出现相同项目的重复条目,我需要过滤掉这些重复项。对于上一行中给定的重复行,所有内容都相同除了 ProductID(索引值)。

有没有办法删除包含完全相同的值的行,这些行显然是重复的条目,尽管具有不同的索引值?我所指的示例如下:

【问题讨论】:

    标签: python pandas dataframe duplicates


    【解决方案1】:

    你需要的是:

    df.drop_duplicates(inplace=True, ignore_index=True)
    

    ignore_index=True 将创建一个新的连续索引 ProductID(没有间隙)

    【讨论】:

      【解决方案2】:

      当然,您可以使用 pandas 的 drop_duplicates() 函数。看下面的例子。

      df = pd.DataFrame({
          'id': [0, 1, 2, 3, 4],
          'brand': ['Yum Yum', 'Yum Yum', 'Indomie', 'Indomie', 'Indomie'],
          'style': ['cup', 'cup', 'cup', 'pack', 'pack'],
          'rating': [4, 4, 3.5, 15, 5]})
      
      df.drop_duplicates(subset=['brand', 'style', 'rating'])
      

      如您所见,我使用了drop_duplicates() 函数和参数subset=[],它允许我设置列,女巫,我想分析。如果您想了解更多关于此功能的信息,请点击here

      要改进上面的代码,你可以使用

      subset=df.columns.difference(['id'])
      

      而不是

      subset=df.columns.difference(['id'])
      

      它允许传递不应分析的列的名称,在您的情况下,您应该使用如下代码:

      df.drop_duplicates(subset=df.columns.difference(['ProductID']))
      

      【讨论】:

      • 你确定你不是指drop_duplicates()吗? duplicated 识别重复和drop_duplicates() 实际上删除它们
      • 我编辑了答案,现在它允许删除重复的行。
      猜你喜欢
      • 2012-10-13
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      相关资源
      最近更新 更多