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

pandas使用read_csv忽略注释时除首列外其余值为NaN问题

问题原因
  • 核心问题出在pd.read_csv的comment="#"参数逻辑:该参数会将每行中所有#字符后的内容全部判定为注释、直接截断,并非只过滤行首为#的注释行。你数据行第一列的取值urn:mavedb:00000040-a-4#1内部包含#,导致该行#后的所有分隔符、其余列取值都被丢弃,最终只剩第一列#前的内容,其余列全部返回NaN。
  • 补充说明:你示例中生成CSV的方式存在冗余:构造DataFrame的前4行注释数据只有1个元素,生成CSV时会自动补全后4列为空值,导出的注释行实际为# Accession: xxx,,,格式,虽不影响读取,但属于不必要的冗余内容。
解决方案

方案1:固定跳过开头注释(已知注释行数时使用)

如果确定注释固定为开头的4行,直接用skiprows参数跳过即可,不会影响数据内部的#识别:

pd.read_csv('test.csv', skiprows=4)

方案2:动态过滤行首注释(注释行数不固定时使用)

先手动过滤所有以#开头的行,再传给pandas读取,兼顾灵活性和安全性:

import pandas as pd
from io import StringIO

with open('test.csv', 'r', encoding='utf-8') as f:
    # 仅过滤行首为#的注释行,保留数据内部的#字符
    valid_lines = [line for line in f if not line.lstrip().startswith('#')]

df = pd.read_csv(StringIO(''.join(valid_lines)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:54:03