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

Python如何将多个CSV文件的指定列合并为含公共时间列的单个文件

问题解决思路与实现代码

你之前代码的核心错误

  • 使用append和pd.concat时指定了axis=0,该参数代表按行纵向堆叠,自然只会得到2列的结果
  • pd.merge仅支持同时合并2个DataFrame,需要分别传入left和right参数,不能直接传入包含多个DataFrame的列表

最优实现方案

我们可以先读取第一个文件保留t列,之后依次读取其他文件,仅保留X_ch2列并重命名区分不同文件,最后横向拼接所有列即可,代码如下:

import pandas as pd
import glob

# 匹配所有目标文件
all_files = glob.glob("Cam_Cantera_IDT_output_800K_*.csv")
require_cols = ['t', 'X_ch2']

# 先读取第一个文件作为基础
combined_df = pd.read_csv(all_files[0], usecols=require_cols)
# 重命名第一个文件的X_ch2列,避免后续重名
combined_df = combined_df.rename(columns={'X_ch2': f'X_ch2_{all_files[0].split("_")[-1].split(".")[0]}'})

# 遍历剩余文件
for f in all_files[1:]:
    # 读取当前文件,只保留X_ch2列
    df = pd.read_csv(f, usecols=['X_ch2'])
    # 重命名X_ch2列,用文件名中的编号区分,比如X_ch2_7401
    file_id = f.split("_")[-1].split(".")[0]
    df = df.rename(columns={'X_ch2': f'X_ch2_{file_id}'})
    # 横向拼接到总表
    combined_df = pd.concat([combined_df, df], axis=1)

# 输出结果,此时总列数=1个t列+48个X_ch2列=49列
combined_df.to_csv("combined_X_ch2.csv", index=False)

代码说明

  1. 读取第一个文件时保留完整的t列和对应X_ch2列,并重命名X_ch2列加入文件编号区分
  2. 遍历后续文件时仅读取X_ch2列,同样按文件编号重命名后横向拼接(axis=1)
  3. 因为所有文件的t列完全一致,不需要重复读取拼接,最终结果天然只有1个t列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:54:04