在熊猫中删除具有不同索引值的重复行

时间:2020-11-10 19:36:36

标签: python pandas dataframe duplicates

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

是否有一种方法可以删除包含完全相同的值的行,尽管索引值不同,但这些行显然是重复的条目?我指的是以下示例:

enter image description here

2 个答案:

答案 0 :(得分:0)

当然,您可以使用熊猫的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']))

答案 1 :(得分:0)

您需要的是:

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

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