【发布时间】:2020-11-11 03:55:09
【问题描述】:
我有一个包含产品数据的数据框,其中产品 ID 存储为索引值,其他属性存储为列。由于人为错误,有时会出现相同项目的重复条目,我需要过滤掉这些重复项。对于上一行中给定的重复行,所有内容都相同除了 ProductID(索引值)。
有没有办法删除包含完全相同的值的行,这些行显然是重复的条目,尽管具有不同的索引值?我所指的示例如下:
【问题讨论】:
标签: python pandas dataframe duplicates
我有一个包含产品数据的数据框,其中产品 ID 存储为索引值,其他属性存储为列。由于人为错误,有时会出现相同项目的重复条目,我需要过滤掉这些重复项。对于上一行中给定的重复行,所有内容都相同除了 ProductID(索引值)。
有没有办法删除包含完全相同的值的行,这些行显然是重复的条目,尽管具有不同的索引值?我所指的示例如下:
【问题讨论】:
标签: python pandas dataframe duplicates
你需要的是:
df.drop_duplicates(inplace=True, ignore_index=True)
ignore_index=True 将创建一个新的连续索引 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'])
如您所见,我使用了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() 实际上删除它们