Polars Join 函数
最后修改时间:2025年3月1日
Polars 是一个用于数据操作的 Python 快速 DataFrame 库。Join 函数根据共同的键合并两个 DataFrame 中的行。本教程将通过实际示例介绍如何在 Polars 中使用 Join 函数。
Join 在合并数据集方面至关重要,例如将客户数据与交易数据合并。Polars 支持多种 Join 类型,包括内连接 (inner)、左连接 (left)、右连接 (right) 和外连接 (outer)。
内连接
此示例展示了如何在两个 DataFrame 之间执行内连接。
import polars as pl df1 = pl.DataFrame({ 'id': [1, 2, 3], 'name': ['Alice', 'Bob', 'Charlie'] }) df2 = pl.DataFrame({ 'id': [2, 3, 4], 'age': [25, 30, 35] }) result = df1.join(df2, on='id', how='inner') print(result)
join(how='inner')
将两个 DataFrame 中 'id' 列匹配的行组合起来。结果中只包含匹配的行。
左连接
此示例演示了左连接,它包含左侧 DataFrame 中的所有行。
import polars as pl df1 = pl.DataFrame({ 'id': [1, 2, 3], 'name': ['Alice', 'Bob', 'Charlie'] }) df2 = pl.DataFrame({ 'id': [2, 3, 4], 'age': [25, 30, 35] }) result = df1.join(df2, on='id', how='left') print(result)
join(how='left')
包含 df1
中的所有行以及 df2
中的匹配行。df2
中不匹配的行将填充为 null 值。
右连接
此示例展示了如何执行右连接,它包含右侧 DataFrame 中的所有行。
import polars as pl df1 = pl.DataFrame({ 'id': [1, 2, 3], 'name': ['Alice', 'Bob', 'Charlie'] }) df2 = pl.DataFrame({ 'id': [2, 3, 4], 'age': [25, 30, 35] }) result = df1.join(df2, on='id', how='right') print(result)
join(how='right')
包含 df2
中的所有行以及 df1
中的匹配行。df1
中不匹配的行将填充为 null 值。
外连接
此示例演示了外连接,它包含两个 DataFrame 中的所有行。
import polars as pl df1 = pl.DataFrame({ 'id': [1, 2, 3], 'name': ['Alice', 'Bob', 'Charlie'] }) df2 = pl.DataFrame({ 'id': [2, 3, 4], 'age': [25, 30, 35] }) result = df1.join(df2, on='id', how='outer') print(result)
join(how='outer')
包含两个 DataFrame 中的所有行。不匹配的行将填充为 null 值。
多列 Join
此示例展示了如何基于多列 Join DataFrame。
import polars as pl df1 = pl.DataFrame({ 'id': [1, 2, 3], 'name': ['Alice', 'Bob', 'Charlie'], 'dept': ['HR', 'IT', 'Finance'] }) df2 = pl.DataFrame({ 'id': [2, 3, 4], 'name': ['Bob', 'Charlie', 'David'], 'dept': ['IT', 'Finance', 'HR'] }) result = df1.join(df2, on=['id', 'name'], how='inner') print(result)
join(on=['id', 'name'])
将 'id' 和 'name' 列都匹配的行组合起来。这对于更复杂的 Join 非常有用。
自连接
此示例演示了自连接,即一个 DataFrame 与其自身进行连接。
import polars as pl df = pl.DataFrame({ 'id': [1, 2, 3], 'manager_id': [None, 1, 2] }) result = df.join(df, left_on='manager_id', right_on='id', how='left') print(result)
join(left_on='manager_id', right_on='id')
将 DataFrame 与其自身连接,以查找每个员工的经理姓名。这对于层级数据非常有用。
交叉连接
此示例展示了如何执行交叉连接,它将两个 DataFrame 的所有行进行组合。
import polars as pl df1 = pl.DataFrame({ 'color': ['Red', 'Blue'] }) df2 = pl.DataFrame({ 'size': ['S', 'M', 'L'] }) result = df1.join(df2, how='cross') print(result)
join(how='cross')
会创建两个 DataFrame 的笛卡尔积。这对于生成组合非常有用。
Join 的最佳实践
- 选择正确的 Join 类型:选择符合您数据需求的 Join 类型。
- 检查重复项:确保键是唯一的,以避免意外结果。
- 处理 Null 值:根据需要使用 null 安全 Join 或填充 null 值。
- 优化性能:使用索引或较小的 DataFrame 来加快 Join 速度。
来源
在本文中,我们探讨了如何在 Polars 中使用 Join 函数。
作者
所有 Polars 教程列表。