⌘+k ctrl+k
1.4 (LTS)
搜索快捷键 cmd + k | ctrl + k
Pandas 上的关系型 API

DuckDB 提供了一种可用于链接查询操作的关系型 API。这些操作采用惰性求值(lazily evaluated),以便 DuckDB 能够优化其执行过程。这些算子可以作用于 Pandas DataFrame、DuckDB 表或视图(可以指向任何 DuckDB 可读取的底层存储格式,例如 CSV 或 Parquet 文件等)。在此,我们展示一个从 Pandas DataFrame 读取数据并返回 DataFrame 的简单示例。

import duckdb
import pandas

# connect to an in-memory database
con = duckdb.connect()

input_df = pandas.DataFrame.from_dict({'i': [1, 2, 3, 4],
                                       'j': ["one", "two", "three", "four"]})

# create a DuckDB relation from a dataframe
rel = con.from_df(input_df)

# chain together relational operators (this is a lazy operation, so the operations are not yet executed)
# equivalent to: SELECT i, j, i*2 AS two_i FROM input_df WHERE i >= 2 ORDER BY i DESC LIMIT 2
transformed_rel = rel.filter('i >= 2').project('i, j, i*2 AS two_i').order('i DESC').limit(2)

# trigger execution by requesting .df() of the relation
# .df() could have been added to the end of the chain above - it was separated for clarity
output_df = transformed_rel.df()

关系型算子还可以用于对行进行分组、聚合、查找不同的值组合、连接(join)、合并(union)等。它们还能够将结果直接插入到 DuckDB 表中或写入 CSV 文件。

请参阅这些附加示例以及 DuckDBPyRelation 类上可用的关系型方法

© 2025 DuckDB 基金会,阿姆斯特丹,荷兰
行为准则 商标使用指南