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

Pandas创建DataFrame长度为1且不可迭代如何解决

问题根源

你的代码错误出在DataFrame构造这一步:daf=pd.DataFrame({'run1':[n254_1], 'run2':[n254_2]})把pd.read_csv读出来的两个完整DataFrame对象,分别包在单元素列表里作为字典的值传入,pandas会直接把这两个DataFrame实例当成普通的单元格值存储,最终生成的daf只有1行2列,每个格子里塞的是一整个独立的DataFrame,自然长度为1,也无法正常迭代遍历内部数据,和你截图里的输出表现完全一致:
运行输出截图

另外你的打印语句也有写法问题:print("length of dataframe %i",len(daf))不会把长度值填充到%i占位符位置,会把字符串和长度值拆成两个独立内容输出。

修复方案

根据你实际的合并需求选对应写法即可:

  • 纵向合并(两个txt列结构一致,把两次run的数据上下堆叠到同一张表里)
    用pd.concat做纵向拼接,代码参考:
    import pandas as pd
    n254_1 = pd.read_csv('input_1.txt')
    n254_2 = pd.read_csv('input_2.txt')
    # keys参数自动给数据打来源标签,区分run1、run2的数据
    daf = pd.concat([n254_1, n254_2], keys=['run1', 'run2'], names=['data_source'])
    # 用f-string修正打印逻辑
    print(f"length of dataframe {len(daf)}")
    print(daf)
    
  • 横向合并(两个txt数据行一一对应,把两次run的结果作为不同列左右对齐拼接)
    确认两个文件行数匹配、对齐逻辑无误后,用横向拼接:
    import pandas as pd
    n254_1 = pd.read_csv('input_1.txt')
    n254_2 = pd.read_csv('input_2.txt')
    # axis=1指定按列方向拼接,keys给两组数据加列层级标记
    daf = pd.concat([n254_1, n254_2], axis=1, keys=['run1', 'run2'])
    print(f"length of dataframe {len(daf)}")
    print(daf)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:21:34