Python 删除表中具有不同索引值的重复行

Python 删除表中具有不同索引值的重复行,python,pandas,dataframe,duplicates,Python,Pandas,Dataframe,Duplicates,我有一个数据框,其中包含产品数据,产品ID存储为索引值,其他属性存储为列。由于人为错误,有时会出现相同项目的重复条目,我需要过滤掉这些重复条目。除了ProductID(索引值)之外,上一行的给定重复行的所有内容都是相同的 有没有一种方法可以删除包含完全相同的值的行,这些值显然是重复的条目,尽管索引值不同?我所指的示例如下: 当然,您可以使用pandas的drop_duplicates()函数。看看下面的例子 df = pd.DataFrame({ 'id': [0, 1, 2, 3, 4

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

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


当然,您可以使用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'])
如您所见,我使用了带有参数
subset=[]
drop\u duplicates()
函数,它允许我设置要分析的列。如果您想了解有关此函数的更多信息,请单击

要改进上述代码,可以使用

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

subset=df.columns.difference(['id'])
它允许传递不应分析的列的名称,在您的情况下,您应该使用如下代码:

df.drop_duplicates(subset=df.columns.difference(['ProductID']))
您需要的是:

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

ignore\u index=True
将创建一个新的continuos索引productId(无间隙)

您确定不是指
删除重复项()
duplicated
识别重复项,并
删除重复项()
实际删除它们我编辑了答案,现在它允许删除重复的行。