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

如何在Pandas中写入含NaN值的CSV?解决列数不匹配断言错误

解决Pandas写入CSV时的NaN填充与列数不匹配问题

嗨,我来帮你搞定这个问题!你遇到的列数不匹配错误和NaN/None填充需求,其实用Pandas自带的方法就能轻松解决,不用到处找文档啦~

第一步:先搞定列数不匹配的核心问题

你碰到的AssertionError: 12 columns passed, passed data had 6 columns,本质是数据的列数和你要写入的目标列数不一致。解决这个的关键是让数据强制对齐到目标列:

  • 如果你已经明确知道所有12个目标列的名称,先把你的DataFrame重新索引到这些列上,缺失的列会自动填充NaN:
    # 假设你的12个目标列存在target_columns列表中
    target_columns = ['col1', 'col2', ..., 'col12']
    df = df.reindex(columns=target_columns)
    
  • 如果你的原始数据是字典列表(比如每行数据可能缺列),直接在创建DataFrame时指定目标列,就能一步到位填充NaN:
    data = [{'col1': 1, 'col2': 2}, {'col7': 7, 'col8': 8}]  # 示例数据,仅包含部分列
    df = pd.DataFrame(data, columns=target_columns)
    

第二步:让NaN/None正确写入CSV

Pandas默认会把NaN写成空字符串,如果你想明确显示NaN或者None,可以在to_csv时用na_rep参数指定:

# 写入时将NaN替换成"NaN"
df.to_csv('output.csv', na_rep='NaN', index=False)

# 或者替换成"None"
df.to_csv('output.csv', na_rep='None', index=False)

这样缺失数据的位置就会被你指定的内容填充,CSV里就能清晰看到哪些位置是缺失值了。

额外说明

其实Pandas本身完全支持写入NaN,只是默认表现为空字符串,加上na_rep就能自定义缺失值的显示内容。而列数不匹配的问题,只要确保数据的列和目标列对齐,就能彻底避免那个断言错误啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:24:19