pandas 合并多个csv文件

import os
import pandas as pd

def merge_csv_files(folder_path, output_file):
    """
    合并指定文件夹中的所有CSV文件
    
    参数:
    folder_path (str): 包含CSV文件的文件夹路径
    output_file (str): 合并后的输出文件路径
    """
    # 检查文件夹是否存在
    if not os.path.exists(folder_path):
        print(f"错误: 文件夹 '{folder_path}' 不存在")
        return
    
    # 获取文件夹中所有CSV文件的列表
    csv_files = [f for f in os.listdir(folder_path) if f.endswith('.csv')]
    
    if not csv_files:
        print(f"错误: 文件夹 '{folder_path}' 中未找到CSV文件")
        return
    
    # 创建一个空的DataFrame用于存储合并后的数据
    merged_data = pd.DataFrame()
    
    # 遍历并合并所有CSV文件
    for _inx,csv_file in enumerate(csv_files):
        file_path = os.path.join(folder_path, csv_file)
     print(f"{_inx} 处理文件 '{csv_file}' ")
try: # 读取CSV文件 df = pd.read_csv(file_path) # 如果是第一个文件,直接使用其数据和表头 if merged_data.empty: merged_data = df else: # 确保后续文件的列与第一列匹配 if list(df.columns) == list(merged_data.columns): merged_data = pd.concat([merged_data, df], ignore_index=True) else: print(f"警告: 文件 '{csv_file}' 的列与其他文件不匹配,已跳过") except Exception as e: print(f"错误: 处理文件 '{csv_file}' 时出错: {str(e)}") # 保存合并后的数据到新的CSV文件 if not merged_data.empty: try: merged_data.to_csv(output_file, index=False) print(f"成功合并 {len(csv_files)} 个CSV文件到 '{output_file}'") print(f"合并后的文件共有 {len(merged_data)} 行数据") except Exception as e: print(f"错误: 保存合并后的文件时出错: {str(e)}") else: print("合并失败: 没有有效的数据可保存") if __name__ == "__main__": # 设置文件夹路径和输出文件路径 folder_path = "result" # 要合并的CSV文件所在文件夹 output_file = "result/result.csv" # 合并后的输出文件名 # 执行合并操作 merge_csv_files(folder_path, output_file)

 

posted @ 2025-06-09 10:53  cup_leo  阅读(34)  评论(0)    收藏  举报