【问题标题】:Reading in multiple CSVs to Pandas Dataframe [duplicate]将多个 CSV 读入 Pandas Dataframe [重复]
【发布时间】:2021-01-16 05:34:52
【问题描述】:

我希望从同一目录中读取多个 CSV 文件并将它们存储到单独的 pandas dfs 中。 CSV 没有相同的列标题。该代码成功列出了目录中的所有 csv 文件,但是当我运行其余文件时它会出错。这是我目前的代码:

import pandas as pd
import os
import glob

path = "/file/path/"
all_files = glob.glob(os.path.join(path, "*.csv"))

for file in all_files:
    file_name = os.path.splitext(os.path.basename(file))[0]
    dfn = pd.read_csv(file)
    dfn.index.name = file_name

我收到错误消息“UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa3 in position 137: invalid start byte”。

【问题讨论】:

标签: python pandas dataframe csv


【解决方案1】:

在 UTF-8 和 'latin1' 字符表中,0xa3 是英镑符号 £;并且是非ASCII。因此,将'latin1' 传递给encoding 参数应该可以解决问题。

所以这一行:

dfn = pd.read_csv(file)

变成:

dfn = pd.read_csv(file, encoding='latin1')

进一步调试:

如果您的文件实际上不包含 utf-8 编码数据,并且使用 'latin1' 不起作用,这表明文件是使用不同的代码页编码的。为了帮助确定编码,this SO question 可能会有所帮助。

或者,在文本编辑器中打开 CSV 并查看位置 137 中的字符(如错误中所述),然后找到将此字符列为 0xa3 的代码页。这是Python's standard encodings的链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 2018-01-09
    • 2017-11-14
    • 2015-09-05
    • 2020-03-12
    • 2018-09-10
    • 2018-06-08
    相关资源
    最近更新 更多