拼接三个pandas DataFrame时出现无法拼接tuple类型对象的错误
问题原因
你遇到的报错本质是pd.concat()接收到的待拼接对象中存在tuple类型的元素,和外层用括号包裹成元组传入没有关系,pd.concat本身支持传入列表或元组作为待拼接对象集合。
你说已经检查过三个对象都是DataFrame,大概率是检查时出现了疏漏:给SMA、MACD、mom三个变量赋值时末尾多写了逗号,比如类似SMA = 你生成SMA的函数(),,此时变量会被Python自动识别为长度为1的元组,元组内第一个元素才是DataFrame。你如果只打印变量内容、或者误检查了元组内元素的类型,就会误以为变量本身是DataFrame。
排查和解决方法
- 先执行以下代码确认三个变量的真实类型:
print(type(SMA), type(MACD), type(mom))
- 如果输出中有
<class 'tuple'>,找到对应变量的赋值语句,删掉末尾多余的逗号即可。 - 补充注意:你当前是横向拼接三个对象且开启了
ignore_index=True,要确保SMA、MACD、mom都是单列的DataFrame,否则后续赋值3个列名时会出现列数不匹配的报错。
内容的提问来源于stack exchange,提问作者ant
相关产品推荐
相关产品推荐

