首页  >  文章  >  后端开发  >  如何在保留主数据帧中的信息的同时合并列上的数据帧?

如何在保留主数据帧中的信息的同时合并列上的数据帧?

Patricia Arquette
Patricia Arquette原创
2024-10-30 09:42:03594浏览

How to Merge DataFrames on a Column While Preserving Information from the Primary DataFrame?

在保留信息的同时合并列上的 DataFrame

使用 Pandas 在 Python 中处理数据时,基于公共列合并数据帧是一种常见的做法任务。然而,有时有必要保留两个数据帧中的信息,特别是当它们包含重叠但不完整的数据时。本文探讨了一种在列上合并数据帧的解决方案,同时确保保留主数据帧中的信息。

问题陈述

考虑两个数据帧,df1 和 df2。 df1 包含有关个人年龄的信息,而 df2 包含其性别信息。目标是在“名称”列上合并 df1 和 df2,但仅保留 df1 中的信息。个体可能并不总是出现在两个数据框中。

解决方案

为了实现这一点,我们可以使用通过设置索引创建的Series的map()方法将一个数据帧添加到我们要合并的列。 map() 方法允许我们应用映射函数,在本例中,该函数将在另一个数据帧中进行查找。

<code class="python"># Create the dataframes
df1 = pd.DataFrame({'Name': ['Tom', 'Sara', 'Eva', 'Jack', 'Laura'],
                    'Age': [34, 18, 44, 27, 30]})

df2 = pd.DataFrame({'Name': ['Tom', 'Paul', 'Eva', 'Jack', 'Michelle'],
                    'Sex': ['M', 'M', 'F', 'M', 'F']})

# Set the index of df2 to Name
df2.set_index('Name', inplace=True)

# Perform the lookup using map
df1['Sex'] = df1['Name'].map(df2['Sex'])

# Display the merged dataframe
print(df1)</code>

替代解决方案:Left Join

或者,我们可以使用带有左连接的合并,这确保 df1 中的所有行都包含在合并的数据框中,即使 df2 中没有相应的行。

<code class="python"># Perform the left join
df3 = df1.merge(df2, on='Name', how='left')

# Display the merged dataframe
print(df3)</code>

注意: 如果数据框包含多个要合并的列,请使用 merge(on=['Year', 'Code'], how='left') 或指定左合并后的列(例如 df1.merge( df2[['Year', 'Code', 'Val']], on=['Year', 'Code'], how='left')).

处理重复

如果用于合并的列有重复项,则处理重复值以防止歧义非常重要。这可以使用 drop_duplicates() 或使用字典来指定映射来完成。

以上是如何在保留主数据帧中的信息的同时合并列上的数据帧?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn