我有一个数据框,其中包含产品数据,产品ID存储为索引值,其他属性作为列。由于人为错误,有时会出现同一项目的重复条目,我需要过滤掉这些重复条目。 除 ProductID(索引值)之外,上一行中给定重复行的所有内容都相同。
是否有一种方法可以删除包含完全相同的值的行,尽管索引值不同,但这些行显然是重复的条目?我指的是以下示例:
答案 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(无间隙)