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

通过for循环读取多单列CSV合并为DataFrame失败,求解决方案

解决CSV文件合并为单个DataFrame的问题

我来帮你梳理下代码里的问题,然后给出修正后的可行方案~

你的代码里存在几个关键问题:

  • 变量名拼写错误:你定义了index作为日期索引,但创建DataFrame时写成了indices,这会直接触发NameError。
  • 列名匹配错误:因为你设置了header=None读取CSV,所以单列的默认列名是0,而非Dates,调用raw.set_index('Dates')会找不到对应列报错。
  • 赋值类型不匹配:你试图把整个raw DataFrame直接赋值给DF的某一列,这会导致数据类型冲突,应该提取单列的数值内容。

修正后的代码方案

这里针对你描述的"各CSV包含单列数据"的场景,给出最贴合需求的解决方案:

import numpy as np
import pandas as pd

files = ['a.csv', 'b.csv', 'c.csv']
# 生成日期索引,统一变量名避免混淆
date_index = np.arange(np.datetime64('2010-01-01'), np.datetime64('2010-01-11'))
# 初始化空DataFrame,用日期作为索引
DF = pd.DataFrame(index=date_index)

for i, f in enumerate(files):
    # 读取单列CSV,转成Series更方便赋值
    raw_series = pd.read_csv(f, header=None, squeeze=True)
    # 重新索引对齐到目标日期序列,缺失值自动填充NaN
    aligned_data = raw_series.reindex(date_index)
    # 将数据加入DF,用文件索引作为列名
    DF[f'col_{i}'] = aligned_data

print(DF)

关键修正点说明

  1. 统一变量名,彻底避免拼写错误和与内置函数的冲突;
  2. 使用squeeze=True将单列CSV直接转为Series,大幅简化后续的赋值操作;
  3. 通过reindex确保每个CSV的数据和目标日期索引严格对齐,缺失的日期位置会自动填充NaN;
  4. 用清晰的列名(如col_0、col_1)区分不同文件的数据,方便后续识别和处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:23:12