在settings里面已经下载了pandas模块,但实际用不了,出现unicodeencodeerror是为什么呢?求大神解答
你这报错跟pandas也没啥关系啊,而且你截图的也没有main.py的代码,看不出来啥问题。。。
为了批量处理文件,当然是想办法获取文件名,通过文件名形成文件路径从而批处理文件。
我以前绕过大弯,根据文件的命名规律,尤其是其中的数字递增规律来创建路径,自从发现os库里的listdir函数才知道自己有多蠢!
获取文件夹下所有文件的filename
files = os.listdir(r'C:\Users\didi\Desktop\work\perf\perform_1')
files是perform_1文件夹下所有文件的文件名形成的列表,再循环处理
all_data = []
for file in files:
file_path = 'C:/Users/didi/Desktop/work/perf/perform_1/' + file
encoding = get_encoding(file_path)
print(encoding)
f = open(file_path,encoding=encoding,errors='ignore')
new_data = []
for line in f.readlines():
# each_line = line.replace('\n','').split(',')
new_data.append(line)
new_data = new_data[1:]
for i in new_data:
all_data.append(i)
print(all_data)
这个错误出现的原因是编码问题。在使用pandas模块的时候,如果数据的编码类型与默认的latin-1不匹配,就会出现UnicodeEncodeError错误。
解决方法如下:
detect
方法来获取文件的编码类型。具体代码如下所示:import chardet
def get_encoding(file):
with open(file, 'rb') as f:
return chardet.detect(f.read())['encoding']
read_csv
方法读取csv文件。具体代码如下所示:import pandas as pd
filename = r"../.././import/feature.csv" # 文件地址
file = pd.read_csv(filename) # 读取csv文件
DataFrame
来创建一个新的列,并将其赋值给原始文件中相应的列。具体代码如下所示:fault_list = ['DE_BO_7', 'DE_BO_14', 'DE_BO_21', 'DE_IR_7', 'DE_IR_14', 'DE_IR_21', 'DE_OR_7', 'DE_OR_14', 'DE_OR_21', 'FE_IR_7',
'FE_IR_14', 'FE_IR_21', 'FE_OR_7', 'FE_OR_14', 'FE_OR_21']
file['DE_min'] = pd.DataFrame(fault_list)
to_csv
方法将修改后的数据重新写入csv文件。具体代码如下所示:file.to_csv(filename, index=False) # 写入csv文件
以上就是解决UnicodeEncodeError错误并使用pandas模块的具体步骤和代码示例。希望对你有帮助!如果还有其他问题,请随时提问。