[英]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.