簡體   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