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

Python中Pandas将DataFrame存为CSV时全NaN列丢失如何解决

解决方案

你可以直接在调用to_csv方法时显式指定需要保留的列列表,同时配置na_rep参数将NaN值转换为空字符串输出,即可强制保留所有全NaN列,列顺序也会严格按照你指定的规则生成:

import numpy as np
import pandas as pd

# 原有生成逻辑不变
df = dataset.reindex(columns=['B2', 'C1', 'T3A', 'C2', 'B3A'])

# 导出时指定列和空值表示
df.to_csv(
    'df.csv',
    columns=df.columns.tolist(), # 直接沿用df现有的列顺序,无需手动输入
    na_rep='', # 将所有NaN输出为空字符串
    index=True # 如果不需要保留原索引可以设为False
)

如果上述方法还是不生效,可以提前对全NaN列做填充处理再导出:

# 仅对全为NaN的列填充空字符串,不影响其他列的原值
for col in df.columns:
    if df[col].isna().all():
        df[col] = ''

df.to_csv('df.csv', na_rep='')

之前方法失效的原因

你之前调用replace(np.nan, '', regex=True)时额外加了regex=True参数,该参数开启后pandas会将匹配规则当做正则表达式处理,无法正确匹配NaN值,去掉该参数即可正常替换空值。

注:默认版本的pandasto_csv方法本身不会主动删除全NaN列,如果你导出后列消失,可以先用纯文本编辑器打开CSV文件确认,排除后续读取CSV时配置参数错误导致的漏读问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 01:39:03