本文主要是介绍Pandas 11-多表联合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基本概念
- 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 操作。
这篇关于Pandas 11-多表联合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!