You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python将多个CSV文件的列合并至单个文件?

解决Pandas合并多同结构CSV文件为宽表的问题

你的代码核心问题是误用了pd.concat按行堆叠数据,而没有基于共同的Application列做列合并,导致最终数据结构完全不符合预期。

正确实现代码(两种方式)

方式1:循环逐步合并

import os
import pandas as pd

path = 'C:\\Users\\mdl518\\Desktop\\'
extension = '.csv'

files = [file for file in os.listdir(path) if file.endswith(extension)]

# 读取第一个文件作为合并基础
merged_df = pd.read_csv(os.path.join(path, files[0]))

# 依次合并剩余CSV文件
for file in files[1:]:
    df = pd.read_csv(os.path.join(path, file))
    # 按Application列精准匹配合并
    merged_df = pd.merge(merged_df, df, on='Application', how='left')

# 保存结果到指定路径
merged_df.to_csv(os.path.join(path, 'df_results.csv'), index=False)

方式2:functools.reduce批量合并(更简洁)

import os
import pandas as pd
from functools import reduce

path = 'C:\\Users\\mdl518\\Desktop\\'
extension = '.csv'

files = [file for file in os.listdir(path) if file.endswith(extension)]
# 批量读取所有CSV为DataFrame列表
dfs = [pd.read_csv(os.path.join(path, f)) for f in files]

# 用reduce批量合并所有DataFrame
merged_df = reduce(lambda left, right: pd.merge(left, right, on='Application', how='left'), dfs)

merged_df.to_csv(os.path.join(path, 'df_results.csv'), index=False)

输出结果验证

运行后生成的df_results.csv完全符合你的期望:

Application,Classifier,Processor,Receiver
Request,14,15,12
Timeframe,3,5,10
Adjudication,10,20,21

关键注意点

  • 所有CSV的Application列值完全一致,这是按列合并的核心依据,确保每一行的数值能精准对应。
  • how='left'保证保留所有行数据,由于你的CSV行完全匹配,用inner也能得到相同结果。
  • 避免用pd.concat做行堆叠,这是你之前代码失效的根本原因。

内容的提问来源于stack exchange,提问作者mdl518

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 19:22:52