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

pd.concat报错:需传入pandas对象可迭代类型,却传入DataFrame

问题解决方法

错误原因

你调用pd.concat时传参错误:该函数要求第一个参数是可迭代的pandas对象集合(比如列表、元组),但你直接传入了两个单独的DataFrame(newdata和emptyframe),导致触发类型错误。

修正代码

根据你“每次添加3列”的需求,需要将待拼接的对象放入列表,并指定axis=1(按列拼接,即新增列):

import pandas as pd

emptyframe = pd.DataFrame()

for j in range(len(df.columns)):
    # 拼接当前索引对应的3列
    newdata = pd.concat([newdf.iloc[:, j], happydf.iloc[:, j], motivedf.iloc[:, j]], axis=1)
    # 将新生成的3列拼接到emptyframe右侧
    emptyframe = pd.concat([emptyframe, newdata], axis=1)

print(emptyframe)

额外优化提示

循环中反复调用pd.concat会产生性能损耗,推荐一次性收集所有需要拼接的列,再统一执行拼接:

import pandas as pd

# 收集所有要拼接的列
all_columns = []
for j in range(len(df.columns)):
    all_columns.extend([newdf.iloc[:, j], happydf.iloc[:, j], motivedf.iloc[:, j]])

# 一次性拼接所有列
emptyframe = pd.concat(all_columns, axis=1)

或者用更简洁的列表推导式:

emptyframe = pd.concat(
    [col_df.iloc[:, j] for j in range(len(df.columns)) for col_df in [newdf, happydf, motivedf]],
    axis=1
)

注意点

  • 用iloc[:, j]代替loc[:, j]:因为j是位置索引,iloc专门用于基于位置的列/行定位,避免列标签非整数时出现匹配错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:56:03