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

如何通过for循环将多个CSV的指定列合并到新CSV文件中

问题修复方案

核心错误原因

  • 合并用的主DataFrame定义在循环内部,每次遍历都会被重置为空,之前合并的内容全部丢失
  • 提前删除了Date GMT列,无法作为公共索引对齐各表数据,且写入文件操作放在循环内,每次都会覆盖上一次的输出结果
  • 合并前没有设置公共索引,横向拼接会按默认行号对齐,容易出现数据错位

修正后代码

import pandas as pd
import glob

# 提前定义你的路径变量pathdf
def compile_data():
    # 主合并表放在循环外初始化,保留所有历史合并结果
    main_df = pd.DataFrame()
    
    for csv_path in glob.glob(pathdf+'*.csv'):
        temp = pd.read_csv(csv_path)
        # 将Date GMT设为索引,作为多表对齐的依据
        temp.set_index('Date GMT', inplace=True)
        # 仅删除不需要的列,保留目标提取列
        temp.drop(['Open','High','Low','Volume'], axis=1, inplace=True)
        
        # 横向合并当前表的目标列到主表,按日期索引对齐
        main_df = pd.concat([main_df, temp], join='outer', axis=1)
    
    # 全部合并完成后统一写入文件,索引保留即对应Date GMT列
    main_df.to_csv('joined.csv', index=True)
    print(main_df.head())

compile_data()

调整说明

  1. 主表初始化逻辑外移,所有遍历得到的列都会累加至同一张表,不会每次重置
  2. 用Date GMT作为公共索引,保证不同表的同一时间数据对应到同一行
  3. 写入操作移到循环结束后执行,不会出现后一次写入覆盖前一次内容的问题
  4. 输出csv时保留索引,最终文件第一列就是你需要的Date GMT列,后续依次为各csv提取的目标列,完全符合预期输出格式

内容的提问来源于stack exchange,提问作者J.E

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:03:00