如何合并两个都有重复的dfs
How to merge two dfs which have duplicates in both
我有两个数据框 df1 和 df2,它们都有重复的行。我想合并这些 dfs。到目前为止我尝试的是从数据框 df2 之一中删除重复项,因为我需要 df1.
中的所有行
问题可能是重复的,但我没有找到任何 solution/hints 这个特定场景的问题。
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[=13= 中的预期多得多]
我怀疑由于大数据和更多重复项,我得到了这些额外的行,但我无法从 df1.
中删除重复行
抱歉,我无法共享实际数据,因为它太大了!
编辑:
来自实际数据的示例结果:
删除重复项后的 df2 和结果 dfn,我在 df1 中只有一个条目用于 ABC 和 XYZ:
提前致谢!
也尝试从 df1 drop_duplicates
:
dfn = pd.merge(df1, df2.drop_duplicates('Name'),
on='Name', how='left)
我有两个数据框 df1 和 df2,它们都有重复的行。我想合并这些 dfs。到目前为止我尝试的是从数据框 df2 之一中删除重复项,因为我需要 df1.
中的所有行问题可能是重复的,但我没有找到任何 solution/hints 这个特定场景的问题。
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[=13= 中的预期多得多]
我怀疑由于大数据和更多重复项,我得到了这些额外的行,但我无法从 df1.
中删除重复行抱歉,我无法共享实际数据,因为它太大了! 编辑: 来自实际数据的示例结果: 删除重复项后的 df2 和结果 dfn,我在 df1 中只有一个条目用于 ABC 和 XYZ:
提前致谢!
也尝试从 df1 drop_duplicates
:
dfn = pd.merge(df1, df2.drop_duplicates('Name'),
on='Name', how='left)