You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导出Polars DataFrame至CSV时前导零丢失的原因及保留方法

解决Polars导出CSV时保留字符串列前导零的问题

要保留带前导零的字符串列导出后的格式,核心要做好两点:保证列的类型是字符串,以及确保导出时格式不被篡改。

1. 确认并强制列类型为字符串

Polars有时会自动将带前导零的字符串推断为数值类型(整数/浮点数),这会直接导致前导零丢失。先检查列的类型:

print(df.schema)

如果目标列不是Utf8类型,需要将其转换为字符串:

  • 读取数据时直接指定类型:
    df = pl.read_csv("input.csv", dtypes={"target_column": pl.Utf8})
    
  • 对已有的DataFrame转换类型:
    df = df.with_columns(pl.col("target_column").cast(pl.Utf8))
    

2. 导出CSV时确保字符串格式保留

只要列是字符串类型,Polars的write_csv默认会保留前导零。如果担心后续用Excel等工具打开时被误解析为数值,可以通过quote_style参数强制用引号包裹字符串:

# 默认导出,文件中会保留前导零(用文本编辑器可查看)
df.write_csv("output.csv")

# 强制给字符串列添加引号,避免被Excel等工具自动转换
df.write_csv("output_quoted.csv", quote_style="necessary")

示例验证

import polars as pl

# 创建测试DataFrame
df = pl.DataFrame({
    "order_id": ["0001", "0010", "0100"],
    "amount": [150, 200, 300]
})

# 确认order_id是字符串类型
print(df.schema)  # 输出: {'order_id': Utf8, 'amount': Int64}

# 导出CSV
df.write_csv("orders.csv")

用文本编辑器打开orders.csv,可以看到order_id列的前导零完全保留。如果用Excel打开,建议先将单元格格式设置为文本,再导入文件,避免Excel自动转换格式。

内容的提问来源于stack exchange,提问作者myamulla_ciencia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 21:30:52