如何解决Pandas pd.concat报错:first argument must be an iterable of pandas objects
错误定位
pd.concat入参不符合要求:pd.concat第一个参数必须是包含多个Pandas对象(DataFrame/Series)的可迭代结构(如列表、元组),你当前直接将单次读取CSV返回的单个DataFrame传入该函数,是触发报错的直接原因。- 合并逻辑错误:你在循环内直接对
data变量赋值,每次循环都会覆盖上一次的计算结果,即使不触发报错,最终也只能拿到最后一个CSV文件的数据,无法实现多文件合并的需求。 - 语法格式错误:代码中
for f in后直接换行,不符合Python基础语法要求,运行时会先触发语法错误。
修复方案
先将所有CSV文件读取为DataFrame存入列表,再统一调用pd.concat合并:
import pandas as pd import glob # 初始化空列表存储单文件DataFrame df_list = [] for f in glob.glob("C:/Users/panksain/Desktop/aovaNALYSIS/CX AOV/Report*.csv"): single_df = pd.read_csv(f, header=None, names=("Metric Period", "")) df_list.append(single_df) # 所有文件读取完成后统一合并 data = pd.concat(df_list, axis=0, ignore_index=True)
也可以用列表推导式简化代码:
import pandas as pd import glob df_list = [pd.read_csv(f, header=None, names=("Metric Period", "")) for f in glob.glob("C:/Users/panksain/Desktop/aovaNALYSIS/CX AOV/Report*.csv")] data = pd.concat(df_list, axis=0, ignore_index=True)
内容的提问来源于stack exchange,提问作者Pankaj Saini
相关产品推荐
相关产品推荐

