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

读取含多表格的文本文件时遇AttributeError:int对象无iloc属性

读取多表格文本文件时的AttributeError问题

问题原因

你代码里的核心错误是对pd.read_csv返回结果的遍历逻辑搞错了:

  • 用sep='\n\n'调用pd.read_csv时,返回的dfs是一个单列的DataFrame,每一行对应一个空行分隔的表格文本块。
  • 但你用enumerate(dfs)遍历的时候,DataFrame的默认迭代逻辑是遍历列标签,而非行。你的单列DataFrame列标签是0(int类型),所以循环里的df变量其实是这个列标签0,自然会触发'int' object has no attribute 'iloc'的错误。

正确解决方案

不需要转换字符串,而是要先把文件按空行分割成独立的表格文本,再逐个解析为DataFrame:

修正后的代码

import pandas as pd
from io import StringIO

file_path = '/data/TB/reporting/18RF0375-MI-TBWGS-NextSeq-2019-63_S54_summary.txt'

# 读取整个文件,按空行分割成各个表格的文本片段
with open(file_path, 'r') as f:
    content = f.read()
table_fragments = [frag.strip() for frag in content.split('\n\n') if frag.strip()]

# 逐个解析每个文本片段为DataFrame
dfs = []
for frag in table_fragments:
    # 用StringIO把文本片段转为可读取的文件对象
    df = pd.read_csv(StringIO(frag), sep='\s+', header=0)
    dfs.append(df)

# 验证结果
for df in dfs:
    print(df.head())
    print('---')

代码说明

  • 先读取整个文件内容,用split('\n\n')分割出每个表格的文本块,同时过滤掉空的无效片段。
  • 对每个表格文本,用StringIO包装后传给pd.read_csv,用sep='\s+'处理空格分隔的表格(如果你的表格是制表符分隔,可换成sep='\t')。
  • 最终得到的dfs是每个独立表格对应的DataFrame列表,可直接遍历使用。

补充说明

如果你的表格表头和内容的分隔规则有特殊情况,可根据实际文本调整pd.read_csv的参数,比如指定header位置、skiprows等,确保表头和数据被正确识别。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 17:52:37