python - 如何合并两个都有重复的dfs
问题描述
我有两个数据框 df1和df2两者都有重复的行。我想合并这些dfs。到目前为止,我尝试的是从数据框 df2之一中删除重复项,因为我需要df1中的所有行。
问题可能是重复的,但我没有找到针对此特定场景的任何解决方案/提示。
data = {'Name':['ABC', 'DEF', 'ABC','MNO', 'XYZ','XYZ','PQR','ABC'],
'Age':[1,2,3,4,2,1,2,4]}
data2 = {'Name':['XYZ', 'NOP', 'ABC','MNO', 'XYZ','XYZ','PQR','ABC'],
'Sex':['M','F','M','M','M','M','F','M']}
df1 = pd.DataFrame(data)
df2 = pd.DataFrame(data2)
dfn = df1.merge(df2.drop_duplicates('Name'),on='Name')
print(dfn)
上述片段的结果:
Name Age Sex
0 ABC 1 M
1 ABC 3 M
2 ABC 4 M
3 MNO 4 M
4 XYZ 2 M
5 XYZ 1 M
6 PQR 2 F
这对于上述数据非常有效,但是我有一个大数据,并且这种方法的行为不同,因为我在dfn中获得的行数比预期的多得多
我怀疑由于大数据和更多重复我得到了那些额外的行,但我不能从df1中删除重复的行。
抱歉,我无法分享实际数据,因为它太大了! 编辑: 来自实际数据的示例结果:删除 dups 后的 df2 和结果 dfn 并且我在 df1 中对于 ABC 和 XYZ 只有一个条目:
提前致谢!
解决方案
也尝试drop_duplicates
从 df1 :
dfn = pd.merge(df1, df2.drop_duplicates('Name'),
on='Name', how='left)
推荐阅读
- php - 使用 php 和 httpclient 下载 githubarchive 数据
- apache-kafka - Kafka jdbc 连接接收器:是否可以将 pk.fields 用于值和键中的字段?
- ios - .gitignore 和 Pod 文件的问题
- jwt - 如何在节点后端使用 jwt 令牌注销
- php - PHP array_diff 用于多列的多维数组
- python - 从 django .env 获取价值失败
- c# - Unity IoC - 如何指定要使用的注册
- java - 仅打印字符串中具有某些字符的单词
- java - QA服务器中的SpringBoot应用程序不调用端点
- swift - 为什么不能在 > 运算符中推断 UnitType?