Skip to main content
本指南可帮助您将现有 pandas 代码迁移到 DataStore,在保持兼容性的同时提升性能。

一行迁移

最简单的迁移方式是只需修改导入语句:
就是这样!大多数 pandas 代码都可以直接运行,无需修改。

逐步迁移

1

安装 chDB

2

修改导入语句

3

测试代码

运行现有代码。大多数操作都无需修改:
4

处理差异

少数操作的行为有所不同。请参阅下方的关键区别

哪些内容无需改动

数据加载

筛选

选区

GroupBy 和聚合

排序

字符串操作

DateTime 操作

I/O 操作


关键区别

1. 惰性求值

DataStore 的操作采用惰性求值——只有在需要结果时才会执行。 pandas:
DataStore:

2. 返回类型

3. 没有 inplace 参数

DataStore 不支持 inplace=True。请始终使用返回值: pandas:
DataStore:

4. 比较 DataStore

pandas 无法识别 DataStore 对象,因此请使用 to_pandas() 来进行比较:

5. 行顺序

对于文件源 (如 SQL 数据库) ,DataStore 可能不会保留行顺序。请使用显式排序:

迁移方案

模式 1:读取-分析-写入

模式 2:使用 pandas 操作 DataFrame

如果你需要 pandas 特有功能,请在最后再进行转换:

模式 3:混合工作流


性能对比

对于大型数据集,DataStore 的速度明显更快: 基于 1000 万行数据的基准测试

迁移故障排查

问题:操作无法正常运行

某些 pandas 操作可能暂不受支持。请检查:
  1. 该操作是否在兼容性列表中?
  2. 尝试先转换为 pandas:ds.to_df().operation()

问题:结果不一致

启用调试日志,以了解具体发生了什么:

问题:性能较慢

检查你的执行方式:

问题:类型不匹配

DataStore 推断出的类型可能会有所不同:

渐进式迁移策略

第 1 周:兼容性测试

第 2 周:迁移简单脚本

先从这类脚本开始:
  • 读取大文件
  • 执行过滤和聚合
  • 不使用自定义 apply 函数

第 3 周:应对复杂场景

对于包含自定义函数的脚本:

第 4 周:完整迁移

将所有脚本切换为使用 DataStore 导入。

常见问题

我可以同时使用 pandas 和 DataStore 吗?

可以!你可以自由地在两者之间转换:

我的测试还能通过吗?

大多数测试应该都能通过。对于比较类测试,请先转换为 pandas:

我可以在 Jupyter 笔记本中使用 DataStore 吗?

可以!DataStore 可在 Jupyter 笔记本中使用:

如何报告问题?

如果发现兼容性问题,请前往以下地址提交: https://github.com/chdb-io/chdb/issues
最后修改于 2026年7月3日