📅  最后修改于: 2023-12-03 15:37:10.040000             🧑  作者: Mango
在数据处理中,我们常遇到需要合并两个数据框的情况。但如果这两个数据框的维度不同,例如一个数据框有3列,另一个数据框有4列,我们该如何进行合并?这时候就可以使用左合并。
左合并,即以左侧数据框为准,将左侧数据框中的所有行与右侧数据框中符合条件的行进行合并,没有匹配的则用 NaN 或指定的值填充。本文将介绍如何使用熊猫(Pandas)库进行左合并。
下面我们先准备两个样本数据,一个包含了姓名和年龄信息,另一个包含了姓名和工资信息:
import pandas as pd
df1 = pd.DataFrame({'姓名': ['张三', '李四', '王五', '赵六'], '年龄': [18, 20, 22, 24]})
df2 = pd.DataFrame({'姓名': ['张三', '李四', '王五'], '工资': [10000, 20000, 30000]})
这两个数据框分别如下所示:
# 查看 df1 数据框内容
df1
# 输出结果
姓名 年龄
0 张三 18
1 李四 20
2 王五 22
3 赵六 24
# 查看 df2 数据框内容
df2
# 输出结果
姓名 工资
0 张三 10000
1 李四 20000
2 王五 30000
接下来,我们使用 pd.merge()
函数进行合并。代码如下:
df_merge = pd.merge(df1, df2, on='姓名', how='left')
# 查看合并后的数据框内容
df_merge
执行完上述代码后,我们得到合并后的数据框 df_merge
,如下所示:
# 输出结果
姓名 年龄 工资
0 张三 18 10000.0
1 李四 20 20000.0
2 王五 22 30000.0
3 赵六 24 NaN
可以看到,我们成功地将 df1
和 df2
两个数据框进行了左合并。其中,“姓名”这一列为合并依据,因此只有在 df1
和 df2
的 “姓名” 列中都有相同值的行才会被合并。同时可以看到,在合并后的数据框中,“赵六”这一行因为在 df2
中找不到相应的 “姓名” 信息,因此被用 NaN 填充。
注:how
参数指定了合并方式,其取值可以为 'left'
(左合并)、'right'
(右合并)、'outer'
(外合并)和 'inner'
(内合并),默认为 'inner'
。
本文介绍了如何利用熊猫库进行左合并。相信读者通过本文的学习,已经掌握了左合并的基本原理及操作方法。