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

使用Dask DataFrame读取CSV文件时遭遇UnicodeDecodeError求助

解决Dask读取多CSV时的UnicodeDecodeError问题

以下是几种实用的解决思路:

  • 定位出错的具体文件
    批量读取CSV时,通常是单个或少数文件编码异常导致报错。先遍历文件逐个排查:

    import os
    import pandas as pd
    
    path = "你的文件路径/"
    relevant_columns = ["列名1", "列名2"]  # 替换为你的目标列名
    
    for filename in os.listdir(path):
        if filename.endswith(".csv"):
            file_path = os.path.join(path, filename)
            try:
                pd.read_csv(file_path, usecols=relevant_columns)
                print(f"{filename} 读取正常")
            except UnicodeDecodeError as e:
                print(f"{filename} 编码错误: {e}")
    
  • 检测异常文件的实际编码
    找到出错文件后,用chardet库检测真实编码(先执行pip install chardet安装):

    import chardet
    
    with open("出错的文件路径.csv", 'rb') as f:
        detect_result = chardet.detect(f.read(10000))  # 读取前10KB数据平衡检测速度与准确性
    
    print(f"检测到编码: {detect_result['encoding']}, 置信度: {detect_result['confidence']}")
    

    你遇到的0x93字节,常见于windows-1252(或cp1252)编码,对应左双引号字符,可优先尝试该编码。

  • 指定编码或开启容错处理

    • 用检测到的编码批量读取:
      df = dd.read_csv(path + '*.csv', usecols=relevant_columns, encoding='windows-1252')
      df = df.compute()
      
    • 若编码检测无效,可开启错误容错(替换/忽略无法解码的字符):
      df = dd.read_csv(path + '*.csv', usecols=relevant_columns, encoding='utf-8', errors='replace')
      # 也可使用 errors='ignore' 直接忽略错误字符
      
  • 自定义读取逻辑适配多编码文件
    若不同文件编码不一致,可自定义单文件读取函数,再用Dask批量处理:

    from dask.dataframe import from_map
    import pandas as pd
    import os
    
    def read_csv_with_fallback(filename):
        try:
            return pd.read_csv(filename, usecols=relevant_columns, encoding='utf-8')
        except UnicodeDecodeError:
            return pd.read_csv(filename, usecols=relevant_columns, encoding='windows-1252')
    
    file_list = [os.path.join(path, f) for f in os.listdir(path) if f.endswith('.csv')]
    df = from_map(read_csv_with_fallback, file_list).compute()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:23:21