【场景】需要批量合并.xls文件
【背景】
【原代码】
import os
import pandas as pd
#读取文件夹内所有以.xls结尾的excel文件
excel = [
pd.read_excel(fname)
for fname in os.listdir("./")
if ".xls" in fname
]
df =pd.concat(excel)#合并
df.to_excel("output.xlsx",index=False)#导出
【解决思路】
将文件换成编码为utf-8的文件,代码即可顺利执行——>目标更换位更改文件编码为utf-8
可以使用codecs
模块(官方文档)(这个是python自带的模块,直接可以import codecs,不需要下载)
在自己程序代码前面加上以下几句
import sys#获取当前默认编码
reload(sys)#使用reload
sys.setdefaultencoding('utf8') #设置编码
【结果】报错:name ‘reload’ is not defined
【错误原因】此方法为python2的写法,但是在python3中这个需要已经不存在了(这么做也没有实际意义)
类比于弯路1,python3的替代方法
import importlib,sys
importlib.reload(sys)
【结果】仍然出现该错误
【场景】需要剔除.xlsx文件中“公司代码”列中的重复数据
【原代码】
import pandas as pd
people=pd.read_excel('E:\id.xlsx')
people.drop_duplicates(subset=['公司代码'],inplace=True,keep='first')
people.to_excel('E:\output.xlsx',index=False)
【解决思路】把‘公司代码’那一列的数据类型改一下。
import pandas as pd
people=pd.read_excel('E:\id.xlsx')
people['公司代码']=people['公司代码'].astype(str)#修改数据类型
people.drop_duplicates(subset=['公司代码'],inplace=True,keep='first')
people.to_excel('E:\output.xlsx',index=False)
1.中文的csv文件的编码改成utf-8的方法
2.How to convert a file to utf-8 in Python?