繁体   English   中英

如何从 DataFrame 中删除重复项

[英]How can I remove the duplicates from the DataFrame

详情请查看图片 问题是有些标题之间的唯一区别是颜色,详细信息的 rest 在每一列中都是匹配的。

例子:

  1. Apple iPhone 12 Pro Max (256GB) - 金色
  2. Apple iPhone 12 Pro Max (256GB) - 太平洋蓝

两者之间的唯一区别是金色和太平洋蓝,所有其他值都相同。

现在我想删除所有此类标题或重复项,其中差异仅在标题中,但细节的 rest 相同。

import pandas as pd 
import numpy as np 

df = pd.read_csv('../amazon_listing_scraper/amazon_listing.csv')
df.head(5)

df[np.isin(df, ['Apple iPhone 12 Pro Max (256GB) - Gold','Apple iPhone 12 Pro Max (256GB) - Pacific Blue']).any(axis=1)]

我致力于清理具有重复Names的数据集,这就是我删除这些名称的方式:

df = df.drop_duplicates(subset = "Name")

您可以尝试这样做:

df = df.drop_duplicates(subset = "Title")

阅读文档以了解更多信息。

这是对@Ishan Shishodiya 帖子的扩展。

如果通过-将颜色添加到名称中,那么您可以先拆分,将 DataFrame 扩展一列名为“color”,在“title”上放置重复项,然后再次放置“color”。

df[['title', 'color']] = df['title'].str.split(' - ', 1, expand=True)
df = df.drop_duplicates(subset='title')
df = df.drop('color')

最小的例子

我只在两列中显示它,以进一步简化它。

import pandas as pd

df = pd.DataFrame({
    'title': ["Apple iPhone 12 Pro Max (256GB) - Gold", "Apple iPhone 12 Pro Max (256GB) - Pacific Blue"],
    'stars':[4.7]*2
})
>>> df
                                            title    stars
0          Apple iPhone 12 Pro Max (256GB) - Gold      4.7
1  Apple iPhone 12 Pro Max (256GB) - Pacific Blue      4.7

df[['title', 'color']] = df['title'].str.split(' - ', 1, expand=True)
df = df.drop_duplicates(subset='title')
df = df.drop("color", axis=1)

>>> df
                             title    stars
0  Apple iPhone 12 Pro Max (256GB)      4.7

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM