Polars 是一个用 Rust 构建的 DataFrames 库,支持 Python 和 Node.js 的绑定。它使用 Apache Arrow 的列式格式 作为其内存模型。DuckDB 可以读取 Polars DataFrames 并将查询结果转换为 Polars DataFrames。它在内部使用高效的 Apache Arrow 集成来实现这一点。请注意,必须安装 pyarrow
库才能使集成工作。
安装
pip install -U duckdb 'polars[pyarrow]'
Polars 到 DuckDB
DuckDB 可以通过引用当前作用域中存在的 Polars DataFrames 的名称来原生查询 Polars DataFrames。
import duckdb
import polars as pl
df = pl.DataFrame(
{
"A": [1, 2, 3, 4, 5],
"fruits": ["banana", "banana", "apple", "apple", "banana"],
"B": [5, 4, 3, 2, 1],
"cars": ["beetle", "audi", "beetle", "beetle", "beetle"],
}
)
duckdb.sql("SELECT * FROM df").show()
DuckDB 到 Polars
DuckDB 可以使用 .pl()
结果转换方法将结果输出为 Polars 数据框。
df = duckdb.sql("""
SELECT 1 AS id, 'banana' AS fruit
UNION ALL
SELECT 2, 'apple'
UNION ALL
SELECT 3, 'mango'"""
).pl()
print(df)
shape: (3, 2)
┌─────┬────────┐
│ id ┆ fruit │
│ --- ┆ --- │
│ i32 ┆ str │
╞═════╪════════╡
│ 1 ┆ banana │
│ 2 ┆ apple │
│ 3 ┆ mango │
└─────┴────────┘
要了解更多关于Polars的信息,请随意探索他们的Python API参考。