python - 避免重复数据框与其副本之间的 Pandas 合并
问题描述
我需要在同一数据框的列中找到匹配项,我正在做的是复制数据框并在数据框与其副本之间进行合并,但是当两列相等且相同时,有一种方法可以避免重复结果如前所示。例如:
df1 = pd.DataFrame()
df1['Id'] = ['001','002','003','004','005','006']
df1['Tel'] = ['123','456','789','123','852','123']
df2 = df1
df3 = pd.merge(df1,df2,on='Tel',how='inner')
结果如下:
Id_x Tel Id_y
0 001 123 001
1 001 123 004
2 001 123 006
3 004 123 001
4 004 123 004
5 004 123 006
6 006 123 001
7 006 123 004
8 006 123 006
9 002 456 002
10 003 789 003
11 005 852 005
但我想要以下结果:
Id_x Tel Id_y
0 001 123 004
1 001 123 006
2 004 123 006
如您所见,当 Id_x == Id_y 时我需要忽略结果,但当相同的结果以不同的顺序显示时,我也需要忽略,例如在第一个结果中,索引 1 与索引 3 的结果相同,索引 2 与索引 6 的结果相同,索引 5 与索引 7 的结果相同。所以在最终结果中,我只想要索引 1、索引 2 和索引 5。
有没有办法做到这一点?
太感谢了!
解决方案
一种迂回的解决方案,但这应该会给你你正在寻找的答案
df1 = pd.DataFrame()
df1['Id'] = ['001','002','003','004','005','006']
df1['Tel'] = ['123','456','789','123','852','123']
df1 = df1.drop_duplicates()
df2 = df1
df3 = pd.merge(df1,df2,on='Tel',how='inner')
df3 = df3[df3['Id_x'] != df3['Id_y']]
推荐阅读
- php - 一直在尝试通过表单使用循环
- bash - 使用与 ABC 中的文件 B 相同的行数将多个文件合并为一个
- javascript - 将数据传递给 React (Native) hooks,比如基于类的组件
- c++ - 使用代码在 AWS SDK C++ 控制台应用程序上设置凭证
- mysql - 如何在 MYSQL 中获取主管的姓名而不是 UserID + INNER JOIN
- eclipse - 使用 UIMA 的注释浏览器视图时出现异常
- git - 仅带有生产分支的 Git 存储库(无开发历史)
- sql - SQL - 两个条件都匹配因此计数
- android - 如何从联系人列表中获取姓名
- python - 如何使用 python 将规则应用于 Outlook?