在 Python 中合并数据框时出现重复的行

Posted

技术标签:

【中文标题】在 Python 中合并数据框时出现重复的行【英文标题】:Duplicated rows when merging dataframes in Python 【发布时间】:2016-12-25 11:12:02 【问题描述】:

我目前正在使用外部连接合并两个数据框。但是,合并后,即使合并的列包含相同的值,我也会看到所有行都是重复的。

具体来说,我有以下代码。

merged_df = pd.merge(df1, df2, on=['email_address'], how='inner')

这是两个数据框和结果。

df1

          email_address    name   surname
0  john.smith@email.com    john     smith
1  john.smith@email.com    john     smith
2       elvis@email.com   elvis   presley

df2

          email_address    street  city
0  john.smith@email.com   street1    NY
1  john.smith@email.com   street1    NY
2       elvis@email.com   street2    LA

merged_df

          email_address    name   surname    street  city
0  john.smith@email.com    john     smith   street1    NY
1  john.smith@email.com    john     smith   street1    NY
2  john.smith@email.com    john     smith   street1    NY
3  john.smith@email.com    john     smith   street1    NY
4       elvis@email.com   elvis   presley   street2    LA
5       elvis@email.com   elvis   presley   street2    LA

我的问题是,不应该这样吗?

这就是我希望我的merged_df 的样子。

          email_address    name   surname    street  city
0  john.smith@email.com    john     smith   street1    NY
1  john.smith@email.com    john     smith   street1    NY
2       elvis@email.com   elvis   presley   street2    LA

有什么方法可以实现吗?

【问题讨论】:

我的评论可能看起来很傻,但你的合并不应该是 merge_list = pd.merge(list_1 , list_2 , on=['email_address'], how='inner') 吗? Pandas Merge - How to avoid duplicating columns的可能重复 是的,我的描述有误,已修复!无论如何,我目前在 python 中的查询正如你所说:D 谢谢! 【参考方案1】:
list_2_nodups = list_2.drop_duplicates()
pd.merge(list_1 , list_2_nodups , on=['email_address'])

预计会有重复的行。 list_1 中的每个 john smith 与 list_2 中的每个 john smith 匹配。我不得不将重复项放在其中一个列表中。我选择了list_2

【讨论】:

啊,我明白了。再次感谢您的澄清,确实有效! @RobertoBertinetti,请考虑accepting,如果您认为它已经回答了您的问题,请点赞 对不起,我花了很长时间,但我做到了:) 这对我不起作用。我知道为什么,但我仍然得到重复的值

以上是关于在 Python 中合并数据框时出现重复的行的主要内容,如果未能解决你的问题,请参考以下文章

尝试合并两个不同数据框的两列时出现问题?

如何在 R 中合并同一数据框中的行(基于特定列下的重复值)?

合并 Firestore 查询时出现重复数据

合并数据框中的行[重复]

当我在 python 中加载数据帧时出现 UnicodeDecodeError [重复]

垂直合并2个数据框[重复]