Python 合并多个csv文件 (pandas)

Python 合并多个csv文件 (pandas)

只需要修改 文件夹路径、新文件的列名、需要合并的列的序号

import pandas as pd
import os

# 根据需要修改以下部分
path = os.path.abspath('G:\\贸易\\W_C')  # 文件夹路径
filename_extenstion = '.csv'  # 文件后缀
new_file_name = 'result.csv'  # 合并后的文件名
cols_new_name = ['列名1', '列名2', '列名3', '列名4', '列名5', '列名6']  # 汇总后的列名,根据需要修改
cols_num = [1, 7, 8, 9, 11, 12]  # 需要合并的列的索引,从0开始
# --------------------


# 读取所有文件名
file_allname = []  # 用于存储全部文件的名字
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]  # 跳过标题行
        aa.to_csv(path + '\\' + new_file_name, mode='a', encoding='gbk', header=False, index=False)
    print('合并结束,生成新文件:' + new_file_name)
except PermissionError as e:
    print('出现异常:' + str(type(e)) + '!\n文件已打开?请先关闭')

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。