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

使用Pandas/Dask导入CSV/Excel时遇编码错误与空格转码异常

问题解决方法

一、CSV导入的Unicode解码错误

出现的错误:

UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 6892: character maps to

试这几种办法:

  • 换utf-8编码,同时加上错误处理参数避免崩溃:
    # Pandas
    names_csv = pd.read_csv('file_name.csv', encoding='utf-8', errors='replace')
    # Dask
    names_csv_dd = dd.read_csv('file_name.csv', encoding='utf-8', errors='replace')
    
  • 用latin-1编码,它能兼容所有字节,不会触发解码错误:
    names_csv = pd.read_csv('file_name.csv', encoding='latin-1')
    names_csv_dd = dd.read_csv('file_name.csv', encoding='latin-1')
    
  • 先检测文件真实编码(需要先装chardet:pip install chardet):
    import chardet
    with open('file_name.csv', 'rb') as f:
        file_encoding = chardet.detect(f.read())['encoding']
    # 用检测出的编码导入
    names_csv = pd.read_csv('file_name.csv', encoding=file_encoding)
    names_csv_dd = dd.read_csv('file_name.csv', encoding=file_encoding)
    

二、Excel导入后空格变_x0020_的处理

这是XML转义的空格字符,直接替换即可:

  • 只处理列名:
    names_excel.columns = names_excel.columns.str.replace('_x0020_', ' ')
    
  • 列名和内容一起处理:
    names_excel = names_excel.replace('_x0020_', ' ', regex=True)
    names_excel.columns = names_excel.columns.str.replace('_x0020_', ' ')
    
  • Dask的处理方式,把清理逻辑放到延迟读取函数里:
    def clean_excel_df(file_path):
        df = pd.read_excel(file_path)
        df.columns = df.columns.str.replace('_x0020_', ' ')
        df = df.replace('_x0020_', ' ', regex=True)
        return df
    
    parts = dask.delayed(clean_excel_df)("file_name.xlsx")
    df = dd.from_delayed(parts)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:15:31