【问题标题】:Can't open csv file in pandas due to unicode decoding error由于 unicode 解码错误,无法在 pandas 中打开 csv 文件
【发布时间】:2017-04-24 18:36:14
【问题描述】:

我使用

将 pandas 数据框保存为 csv
df_to_save.to_csv(save_file_path)

但是当我在使用中读回它时

df_temp = pd.read_csv(file_path)

我收到一条错误消息说

UnicodeDecodeError: 'utf-8' 编解码器无法在位置解码字节 0xbf 158: 无效的起始字节

我尝试通过打开 csv 文件来强制读取它的编码为 utf-8

df_temp = pd.read_csv(file_path, index_col=False, encoding="utf-8",sep=',') 

真的卡住了,谁能帮忙?

非常感谢

【问题讨论】:

  • 您能否发布原始文本数据或指向您实际 csv 的链接,编码可能不是您认为的那样

标签: python python-3.x pandas


【解决方案1】:

或为了避免编码问题使用 EXCEL(也返回 DataFrames

writer = pd.ExcelWriter('train_numeric.xlsx')
newTRAIN.to_excel(writer,'Sheet1')

那么

newTEST_excel = pd.read_excel('train_numeric.xlsx')
newTEST_excel.head(2)

【讨论】:

  • 提示...停止文本“YELLING” ;-)
【解决方案2】:

更改分类数据的编码:

def my_func(df):
    for col in df.columns:
        df[col] = df[col].str.decode('iso-8859-1').str.encode('utf-8')

此函数将就地更改分类数据的编码。

【讨论】:

    【解决方案3】:

    该字符未以 UTF-8 编码。

    您可以使用 (docs) 复制它:

    b'\xbf'.decode("utf-8", "strict")
    Traceback (most recent call last):
    
      File "<ipython-input-7-4db5a43b4577>", line 1, in <module>
        b'\xbf'.decode("utf-8", "strict")
    
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbf in position 0: invalid start byte
    

    你可以尝试不同的编码,这样可以解决这个字符的问题:

    b'\xbf'.decode("ISO-8859-1", "strict")
    Out: '¿'
    

    所以你的read_csv 会变成:

    df_temp = pd.read_csv(file_path, index_col=False, encoding="ISO-8859-1") 
    

    【讨论】:

      猜你喜欢
      • 2015-09-01
      • 2018-03-25
      • 2010-11-23
      • 2023-02-22
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      相关资源
      最近更新 更多