Skip to main content
Pandas 是 Python 中广受欢迎的数据处理和分析库。 在 chDB 2.0 版本中,我们优化了对 Pandas DataFrame 的查询性能,并引入了 Python 表函数。 在本指南中,我们将学习如何使用 Python 表函数查询 Pandas DataFrame。

准备

首先,创建一个虚拟环境:
现在我们来安装 chDB。 请确保版本为 2.0.2 或更高版本:
现在我们来安装 Pandas 和另外几个库:
我们将使用 ipython 运行本指南其余部分中的命令,你可以通过执行以下命令启动它:
你也可以在 Python 脚本或常用的 notebook 中使用这段代码。

从 URL 创建 Pandas DataFrame

我们将从 StatsBomb GitHub 仓库 中查询一些数据。 首先导入 requests 和 pandas:
然后,我们将其中一个 matches JSON 文件读入 DataFrame:
先来看看我们要处理的数据:
接下来,我们将加载其中一个 events JSON 文件,并在该 DataFrame 中新增一个名为 match_id 的列:
再来看看第一行:

查询 Pandas DataFrame

接下来,我们来看看如何使用 chDB 查询这些 DataFrame。 我们将导入该库:
我们可以使用 Python 表函数来查询 Pandas DataFrame:
因此,如果我们想列出 matches_df 中的各列,可以这样写:
然后,我们可以通过编写以下查询,找出哪些裁判执法了不止一场比赛:
现在,我们来看看 events_df

连接 Pandas DataFrame

我们也可以在查询中将多个 DataFrame 连接起来。 例如,要了解比赛概况,我们可以编写以下查询:

从 DataFrame 创建并填充表

我们也可以根据 DataFrame 创建并填充 ClickHouse 表。 如果要在 chDB 中创建表,则需要使用 Stateful Session API。 让我们导入 session 模块:
初始化会话:
接下来,我们将创建一个数据库:
然后,基于 events_df 创建 events 表:
然后,我们可以运行以下查询,找出接到传球最多的球员:

将 Pandas DataFrame 与表连接

最后,我们还可以更新连接查询,将 matches_df DataFrame 与 statsbomb.events 表连接起来:
最后修改于 2026年7月23日