基本概念
- DataFrame: 一个二维的表格数据结构,类似于电子表格或 SQL 表。
- join: 将两个 DataFrame 按照某个共同的列(键)进行合并。
常见的 join 类型
- inner join: 只保留两个 DataFrame 中键匹配的行。
- left join: 保留左边 DataFrame 的所有行,右边 DataFrame 中没有匹配的行用 NaN 填充。
- right join: 保留右边 DataFrame 的所有行,左边 DataFrame 中没有匹配的行用 NaN 填充。
- outer join: 保留两个 DataFrame 中的所有行,没有匹配的行用 NaN 填充。
使用方法
Pandas 提供了 merge
和 join
两种方法来进行表的合并。
使用 merge
方法
import pandas as pd
# 创建示例 DataFrame
df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'value1': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['B', 'C', 'D'], 'value2': [4, 5, 6]})
# inner join
result_inner = pd.merge(df1, df2, on='key', how='inner')
# left join
result_left = pd.merge(df1, df2, on='key', how='left')
# right join
result_right = pd.merge(df1, df2, on='key', how='right')
# outer join
result_outer = pd.merge(df1, df2, on='key', how='outer')
使用 join
方法
join
方法默认是基于索引进行合并,但也可以通过 on
参数指定列。
# 创建示例 DataFrame
df1 = pd.DataFrame({'value1': [1, 2, 3]}, index=['A', 'B', 'C'])
df2 = pd.DataFrame({'value2': [4, 5, 6]}, index=['B', 'C', 'D'])
# inner join
result_inner = df1.join(df2, how='inner')
# left join
result_left = df1.join(df2, how='left')
# right join
result_right = df1.join(df2, how='right')
# outer join
result_outer = df1.join(df2, how='outer')
多表联合 join
当需要将多个 DataFrame 进行联合 join 时,可以多次调用 merge
或 join
方法。
# 创建示例 DataFrame
df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'value1': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['B', 'C', 'D'], 'value2': [4, 5, 6]})
df3 = pd.DataFrame({'key': ['C', 'D', 'E'], 'value3': [7, 8, 9]})
# 先合并 df1 和 df2,再合并结果与 df3
result = pd.merge(pd.merge(df1, df2, on='key', how='outer'), df3, on='key', how='outer')
注意事项
- 键的名称: 确保两个 DataFrame 中用于合并的列名称相同。
- 数据类型: 确保用于合并的列数据类型一致,避免因数据类型不匹配导致的合并错误。
- 性能: 对于大数据集,考虑使用更高效的数据库或优化 Pandas 操作。