给定两个具有重叠但不相同行的 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中文网其他相关文章!