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

CSV文件列内容在Pandas DataFrame中显示为NaN的问题求助

解决CSV列显示异常且Pandas读取为NaN的问题
  • 排查文件编码不匹配
    CSV查看器通常会自动识别编码,但VSCode和Pandas默认用UTF-8解析。如果文件实际是GBK、UTF-16或CP1252这类编码,就会出现显示异常或读取失败:

    • 在VSCode中打开文件时,点击右下角的编码标识(比如“UTF-8”),切换为GBK、UTF-16等编码测试,看能否正常显示内容。
    • Pandas读取时指定对应编码:
      df = pd.read_csv('your_file.csv', encoding='gbk') # 可尝试'utf-16'、'cp1252'等编码
      
  • 定位并清理特殊不可见字符
    正则无效可能是没覆盖到目标字符,先读取文件原始字节,精准定位异常字符:

    with open('your_file.csv', 'rb') as f:
        # 打印前5行的原始字节,排查异常内容
        for _ in range(5):
            print(f.readline())
    

    常见的问题字符包括零宽度空格(\u200b)、软连字符(\xad)或ASCII控制字符(\x00-\x1f),针对性清理:

    import pandas as pd
    import re
    
    def clean_column(text):
        if pd.isna(text):
            return text
        # 移除常见不可见字符和控制字符
        cleaned = re.sub(r'[\u200b\u00ad\x00-\x1f\x7f-\x9f]', '', str(text))
        return cleaned.strip()
    
    # 先以字符串类型读取避免解析丢失
    df = pd.read_csv('your_file.csv', dtype={'target_column': str})
    df['target_column'] = df['target_column'].apply(clean_column)
    
  • 修正CSV解析规则
    如果列内容包含分隔符(比如逗号)但未用引号包裹,会导致Pandas解析列错位,看起来目标列全为NaN:

    # 指定分隔符和引号规则,用python引擎处理复杂解析场景
    df = pd.read_csv('your_file.csv', sep=',', quotechar='"', engine='python')
    

    也可以跳过解析错误的行,排查是否是部分异常行影响全局:

    df = pd.read_csv('your_file.csv', on_bad_lines='skip')
    
  • 强制以字符串类型读取
    如果目标列是数值型,但存在隐藏字符导致Pandas无法解析为数值,会自动转为NaN。先强制以字符串类型读取,再做后续处理:

    df = pd.read_csv('your_file.csv', dtype={'target_column': str})
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:38:14