python 合并csv文件遇到的问题
- 问题一:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xba in position 0: invalid start byte
- 问题二:csv中文乱码
- 最后附上csv文件合并的代码
问题一:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xba in position 0: invalid start byte
解决办法:
设置read_csv编码格式,添加 encoding=‘gbk’,或encoding=‘gb18030’
data = pd.read_csv(file,encoding='gbk')
data = pd.read_csv(file,encoding='gb18030')
问题二:csv中文乱码
合并csv文件后出现中文乱码,解决办法:
设置to_csv编码格式,由”utf_8″ 改为 “utf_8_sig”
data.to_csv(file,encoding='utf_8_sig')
csv文件合并
步骤:
1、读取多个csv文件,合并至result.csv
2、删除重复的标题行,另存至result_new.csv
import glob
import pandas as pd
# 多个csv文件合并
def merge(csv_list,outputfile): # csv_list 存放所有csv文件路径的列表
for i in csv_list:
f = open(i,'rb')
data = pd.read_csv(f,encoding='gbk')
data.to_csv(outputfile,mode='a', encoding='utf_8_sig',index=False)
print('完成合并')
# 标题去重
def distinct(file):
df = pd.read_csv(file,header=None) # 第一行视为数据而不是标题
datalist = df.drop_duplicates() # 删除重复行
datalist.to_csv('D:/exercise_py/exercise01/files/result_new.csv',
encoding='utf_8_sig',index=False,header=False) # 去重后最终文件
print('完成去重')
if __name__ == '__main__':
csv_list = glob.glob('D:/exercise_py/exercise01/files/成交明细*.csv') # 合并前所有csv文件的路径
print(csv_list)
result_path = 'D:/exercise_py/exercise01/files/result.csv' # 合并后文件路径
merge(csv_list,result_path)
distinct(result_path)
参考资料:
python 合并多个csv文件
版权声明:本文为weixin_42827025原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。