繁体   English   中英

删除 pandas 中的重复项。 copy() 和 drop_duplicates() 正在删除只出现一次的行

[英]Remove duplicates in pandas. copy() and drop_duplicates() is removing rows that appear only once

正如问题所述。 我正在尝试使用 2 个系列/列df['Offering Family', 'Major Offering']删除 df 中的重复行。

我希望将后续的 df 与我基于主要产品列的另一个合并,因此只有产品系列列将被转换为新的 df。 我应该注意,我只想删除具有在两列中重复的值的行。 如果某个值在产品系列列中出现多次,但主要产品列中的值不同,则不应将其删除。 但是,当我运行下面的代码时,我发现我正在丢失这些值。 有人可以帮忙吗?

df = pd.read_excel(pipelineEx, sheet_name='Data')

dfMO = df[['Offering Family', 'Major Offering']].copy()

dfMO.filter(['Offering Family', 'Major Offering'])

dfMO = df.drop_duplicates(subset=None, keep="first", inplace=False)


#dfMO.drop_duplicates(keep=False,inplace=True)
print(dfMO)

dfMO.to_excel("Major Offering.xlsx")

好吧,您共享的代码有一些奇怪的地方。

首先,您创建了一个dfM0作为df的副本,其中只有两列。 但是随后您将在df上应用drop_duplicates() function,原始 dataframe,并覆盖您创建的 dfM0。

据我了解,您需要的是 dataframe 来保留可以从两列中的值组成的所有唯一组合。 groupby()会更适合您的目的。

尝试这个:

cols = ['Offering Family', 'Major Offering']
dfM0 = df[cols].groupby(cols).count().reset_index()

默认情况下, reset_index()将返回一个副本,因此不需要额外的关键字 arguments。

我已经更新了您的代码,正如 Aditya Chhabra 所提到的,您正在创建一个副本而不是使用它。

df = pd.read_excel(pipelineEx, sheet_name='Data')

dfMO = df[['Offering Family', 'Major Offering']].copy()
dfMO.drop_duplicates(inplace=True)
print(dfMO)

dfMO.to_excel("Major Offering.xlsx")

暂无
暂无

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

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