Python 合并多個(gè)csv文件 (pandas)
只需要修改 文件夾路徑兢仰、新文件的列名吓蘑、需要合并的列的序號(hào)
import pandas as pd
import os
# 根據(jù)需要修改以下部分
path = os.path.abspath('G:\\貿(mào)易\\W_C') # 文件夾路徑
filename_extenstion = '.csv' # 文件后綴
new_file_name = 'result.csv' # 合并后的文件名
cols_new_name = ['列名1', '列名2', '列名3', '列名4', '列名5', '列名6'] # 匯總后的列名裹虫,根據(jù)需要修改
cols_num = [1, 7, 8, 9, 11, 12] # 需要合并的列的索引肿嘲,從0開始
# --------------------
# 讀取所有文件名
file_allname = [] # 用于存儲(chǔ)全部文件的名字
for filename in os.listdir(path):
if os.path.splitext(filename)[1] == filename_extenstion and filename != new_file_name: # 按.csv后綴匹配
t = os.path.splitext(filename)[0]
file_allname.append(t + filename_extenstion) # 拼接.csv后綴敲董,生成完整文件名
df1 = pd.DataFrame(cols_new_name).T
try:
print('開始合并:')
df1.to_csv(path + '\\' + new_file_name, encoding='gbk', header=False, index=False)
for fn in file_allname:
a = pd.read_csv(path + '\\' + fn)
# a = pd.read_csv(path + '\\' + fn, low_memory=False)
print('合并' + fn)
aa = a.iloc[1:, cols_num] # 跳過標(biāo)題行
aa.to_csv(path + '\\' + new_file_name, mode='a', encoding='gbk', header=False, index=False)
print('合并結(jié)束瓦糕,生成新文件:' + new_file_name)
except PermissionError as e:
print('出現(xiàn)異常:' + str(type(e)) + '种远!\n文件已打開蜜徽?請(qǐng)先關(guān)閉')