python dataframe去除重复项_python - Pandas DataFrame处理查找DataFrame中的重复项 - 堆栈内存溢出...

我有2个导入到DataFrames中的Excel文件。 一个是我的主要数据集,另一个是查找数据集。 我处理这两个文件以创建CN ON列,这成为我的关键。 查找数据集得到处理,处理后我将删除重复项。 我想将“ Code列引入主数据集。 如果一个CN ON与多个Code值相关联,则将其分配给'Multiple' 。 如果FO = 'R1' ,则使Code = 'R1' 。 如果关联的CN ON没有代码值,则使Code = 'NONE' 。 对于任何不正确的术语,我也深表歉意!

主数据集

aHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9NTXc0SS5wbmc=

df2 = pd.DataFrame({'CN ON': ['WD-D5','JF-04','P5','PK-E4','UL-G8','MD-ZZ'],

'D1': ['D1','D2','D3','D4','D5','D6']

})

查找数据集

aHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS8wUk9zZC5wbmc=

df = pd.DataFrame({'CN': ['WD','JG','P5','PK','PK','UL','UL'],

'ON': ['D5','04','','E4','E4','G8','G8'],

'FO': ['A','A','A','A','A','R','R'],

'Code': ['D1','YZ','YZ','HY','PB','SA','SA'],

'CN ON': ['WD-D5','JF-04','P5','PK-E4','PK-E4','UL-G8','UL-G8']

})

当前

CN ON是我的键,然后Code是我要查找的值。 我试图在将数据集连接在一起之前修改df2 。 如果FO = 'R1' ,则设置Code = 'R1' 。 如果一个CN ON与不同的Code值相关联,则为所有实例分配Code = 'MULTIPLE' 。

然后将产生下面的DataFrame。

aHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9NUWlySy5wbmc=

然后,我将删除重复的行,这将产生一列唯一的CN ON值。 然后,我将DataFrames连接在一起。

#Remove duplicates

df2.drop_duplicates(inplace=True)

带有Code查找的CN ON唯一列表。

aHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9KcnIyQy5wbmc=

#Left join the two DataFrames, with the Main Data Set being on the left on the 'CN ON' column

combined = pd.merge(df,df2[['CN ON','Code']], on = 'CN ON',how='left')

#If no 'Code' exists, then replace the 'NaN' values with 'NONE'

combined.update(combined[['Code']].fillna('NONE'))

所需结果

aHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS84TFI1OC5wbmc=

我当然可以接受其他解决方案,但这在我看来在逻辑上是有意义的。 我在修改df2以使用Code或'Multiple'更新Code列时遇到麻烦。 任何指导或协助将不胜感激! 在这个过程中,我学到了很多东西,并且我获得了StackOverflow的大量帮助。 感谢大家的耐心配合!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值