如何基于列合并数据帧,保留第一个数据帧的信息?

Mary-Kate Olsen
发布: 2024-10-31 05:17:02
原创
916 人浏览过

How to Merge DataFrames Based on a Column, Preserving the First DataFrame's Information?

如何基于列合并 DataFrame,保留第一个 DataFrame 的信息

给定两个具有重叠但不相同行的 DataFrame,您可以根据特定的条件合并它们将信息从一个列添加到另一个列。在本例中,您想要合并两个数据帧 df1 和 df2,其中 df1 包含有关年龄的信息,df2 包含有关性别的信息。以下是如何在保留第一个数据帧的信息的同时执行此操作。

解决方案

要合并数据帧并保留第一个数据帧的信息,请使用 map 函数以及 set_index 创建的 Series:

<code class="python">df1['Sex'] = df1['Name'].map(df2.set_index('Name')['Sex'])</code>
登录后复制

例如:

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

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

df1['Sex'] = df1['Name'].map(df2.set_index('Name')['Sex'])

print(df1)</code>
登录后复制

输出:

   Name  Age Sex
0   Tom  34   M
1  Sara  18  NaN
2   Eva  44   F
3  Jack  27   M
4 Laura  30  NaN
登录后复制
登录后复制

替代解决方案

实现相同结果的另一种方法是合并使用左联接的数据帧:

<code class="python">df = df1.merge(df2[['Name', 'Sex']], on='Name', how='left')</code>
登录后复制

示例:

<code class="python">df = df1.merge(df2[['Name', 'Sex']], on='Name', how='left')

print(df)</code>
登录后复制

输出:

   Name  Age Sex
0   Tom  34   M
1  Sara  18  NaN
2   Eva  44   F
3  Jack  27   M
4 Laura  30  NaN
登录后复制
登录后复制

处理多个联接列

如果您需要合并多列,请使用相同的左连接方法并指定附加连接列:

<code class="python">df = df1.merge(df2[['Name', 'Sex', 'Year', 'Code']], on=['Year', 'Code'], how='left')</code>
登录后复制

错误处理:重复连接列

如果由于重复连接而遇到错误列,通过删除重复项或使用字典进行映射来处理它。

以上是如何基于列合并数据帧,保留第一个数据帧的信息?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!