读取Pandas数据帧的多个CSV



我想从同一目录中读取多个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"编解码器无法解码位置137中的字节0xa3:无效的起始字节";。

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

所以这行:

dfn = pd.read_csv(file)

成为:

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

进一步调试:

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

或者,在文本编辑器中打开CSV,查看位置137中的字符(如错误中所述(,然后找到将该字符列为0xa3的代码页。这里有一个链接到Python的标准编码。

最新更新