我正在尝试将多个CSV文件组合到一个功能中:
import glob
path = r'/content/drive/My Drive/DatiAirQuality/MI_Air_Quality/data'
all_files = glob.glob(path + "/*.csv")
li = []
for filename in all_files:
df = pd.read_csv(filename, index_col=None, header=0)
li.append(df)
frame = pd.concat(li, axis=0, ignore_index=True)
但是我得到了这个错误:'utf-8'编解码器无法在位置0中解码字节0xb5:无效启动字节
这是追溯:
8 for filename in all_files:
----> 9 df = pd.read_csv(filename, index_col=None,
header=0)
10 li.append(df)
11
谢谢你。
尝试指定以下内容:
df = pd.read_csv(filename, index_col=None, header=0, encoding='latin-1')
latin-1
编码是神奇的 - 它永远不会失败。看看你得到什么。如果这足够好 - 您去了。
如果没有,您必须找出编码CSV文件实际使用的内容。您可以尝试很多不同的编码,直到答案似乎还可以。
这对我有用
pd.read_csv(filename,encoding = 'unicode_escape')
我会尝试:
pd.read_csv(filename, index_col=None, header=0, encoding='utf-8') #OR
pd.read_csv(filename, index_col=None, header=0, encoding='latin1')
首先,您需要知道CSV文件使用的编码类型。您可以尝试使用Chardet:通用字符编码检测器来预测CSV文件中使用的编码类型。可以使用:
轻松安装菜肴pip install chardet
安装片后,您可以使用命令行使用以下方式预测CSV文件的编码:
chardet file_name.csv
输出将是这样的:
file_name.csv: UTF-8-SIG with confidence 1.0
然后检查您的CSV文件的编码,然后更改代码中的以下行:
df = pd.read_csv(filename, index_col=None, header=0)
to:
df = pd.read_csv(filename, index_col=None, header=0, encoding='utf-8')
您可以检查Python支持的可用编码。希望这应该解决您的问题。
,我可以看到,熊猫已经有很多答案。
这是一种替代方法:
with open(file_source, encoding="utf8", errors='ignore') as file:
# Your code goes here