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

使用Pandas批量读取CSV文件后切片报TypeError错误如何解决

问题排查及解决方法

错误根源

你当前代码的核心问题有两点:

  1. all_files = pd.read_csv('ca.csv'), pd.read_csv("ny.csv"), pd.read_csv("tn.csv"), pd.read_csv('az.csv'), pd.read_csv("tx.csv") 这行代码没有用方括号包裹返回值,Python会默认把多个逗号分隔的值组装为元组,此时all_files是存储了5个独立DataFrame对象的元组,不是合并后的表格。元组只支持单个整数/切片作为索引,你传入的[1:, 1]会被识别为元组类型的索引,直接触发类型错误。
  2. 就算all_files是合并后的DataFrame,直接用df[行, 列]的语法也是不符合Pandas规范的,Pandas原生[]操作符不能同时传入行和列的索引,必须通过iloc(按位置索引)或者loc(按标签索引)属性实现二维切片。

正确实现方案

根据你的需求,可选择以下两种实现方式:

方案1:合并所有CSV后提取指定列

如果需要把5个CSV的行数据合并为同一个表格,再提取列:

import pandas as pd
# 读取所有CSV存入列表
all_dfs = [pd.read_csv('ca.csv'), pd.read_csv("ny.csv"), pd.read_csv("tn.csv"), pd.read_csv('az.csv'), pd.read_csv("tx.csv")]
# 按行合并所有表格,重置行索引避免冲突
merged_df = pd.concat(all_dfs, ignore_index=True)
# 取所有行的第2列(索引从0开始计数,1对应第二列)
date_index = merged_df.iloc[:, 1]

方案2:从每个CSV单独提取指定列

如果需要保留每个文件的数据独立性,分别提取列:

import pandas as pd
all_dfs = (pd.read_csv('ca.csv'), pd.read_csv("ny.csv"), pd.read_csv("tn.csv"), pd.read_csv('az.csv'), pd.read_csv("tx.csv"))
# 提取每个文件的第2列,存入列表,顺序和读取CSV的顺序一致
date_index_list = [df.iloc[:, 1] for df in all_dfs]
# 如果只需取第二个文件(ny.csv)的第2列,写法如下
ny_date_index = all_dfs[1].iloc[:, 1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:15:03