如何通过Polars向已有的Parquet文件追加数据
用Polars实现Parquet文件的追加写入
Polars的write_parquet方法默认会覆盖已有文件,要实现追加操作,只需要指定mode="append"参数即可,核心是保证所有待追加的DataFrame与目标Parquet文件的Schema完全一致(列名、数据类型匹配)。
基础实现步骤
- 准备多个结构一致的Polars DataFrame
- 循环遍历这些DataFrame,使用
mode="append"写入目标Parquet文件
示例代码:
import polars as pl # 构造多个结构相同的DataFrame df1 = pl.DataFrame({"id": [1, 2], "value": [10, 20]}) df2 = pl.DataFrame({"id": [3, 4], "value": [30, 40]}) df3 = pl.DataFrame({"id": [5, 6], "value": [50, 60]}) # 统一追加写入,即使文件不存在也会自动创建 for df in [df1, df2, df3]: df.write_parquet("target.parquet", mode="append")
关键注意事项
- Schema必须严格匹配:如果待追加的DataFrame列名缺失、类型不匹配,会直接抛出错误。比如目标文件的
value列是Int64,追加的DataFrame里value是Float64,就需要先转换类型:df = df.with_columns(pl.col("value").cast(pl.Int64)) - 行组追加机制:每次追加的DataFrame会作为一个独立行组写入Parquet文件,读取时Polars会自动合并所有行组,不影响数据查询。
- 版本兼容性:确保使用的Polars版本在0.18.0及以上,更早版本可能不支持
mode参数。
内容的提问来源于stack exchange,提问作者Jahspear
相关产品推荐
相关产品推荐

