TypeError:无法连接类型为“<class 'list'>”的对象;只有 Series 和 DataFrame obj 有效

TypeError: cannot concatenate object of type '<class 'list'>'; only Series and DataFrame objs are valid

提问人:vp_050 提问时间:10/26/2021 更新时间:9/17/2023 访问量:53386

问:

我有一个名为 d0、d1、d2 的 10 个数据帧的列表,...d9.它们都有 3 列和 100 行。

d0.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 100 entries, 0 to 99
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   0       100 non-null    float64
 1   1       100 non-null    float64
 2   2       100 non-null    float64
dtypes: float64(3)
memory usage: 2.5 KB

我想合并所有数据帧,以便我可以有 3 列和 1000 行,然后将其转换为数组。

s1=[d0,d1,d2,d3,d4,d5,d6,d7,d8,d9]
s2=pd.concat([s1])

上面的代码抛出错误:

TypeError: cannot concatenate object of type '<class 'list'>'; only Series and DataFrame objs are valid

type(s1)
list

我在 pandas 中使用了 pd.concat 中建议的解决方案,给出了一个 TypeError:无法连接类型为“<class 'str'>”的对象; 只有 Series 和 DataFrame obj 有效;但是,出现了上述错误。

Python Pandas DataFrame numpy 类型

评论

0赞 arp5 10/26/2021
尝试 stackoverflow.com/questions/58482715/...

答:

6赞 Thomas Q 10/26/2021 #1

s1已经是一个列表。执行您所做的操作将 pd.concat 与带有 DataFrames 的列表列表一起调用,这是 pandas 不允许的。你应该这样做:

s2=pd.concat(s1)

评论

1赞 vp_050 10/26/2021
抛出此错误“TypeError: cannot concatenate object of '<class 'str'>';只有 Series 和 DataFrame obj 有效”
1赞 Thomas Q 10/26/2021
s1 中的项目之一是字符串。你必须弄清楚你做错了什么,因为我给出的答案正确地连接了数据帧
0赞 OnceUponATime 9/17/2023 #2

@ThomasQ正确的是,数据帧列表的串联应该有效。我遇到了同样的问题并检查了我的数据帧的类型,发现一个是熊猫系列列表,而不是正确的.df

因此,我首先将序列列表转换为数据帧:

df3=pd.concat(f_to_add, axis=0)

然后,我在两个有效数据帧的列表上重复了串联:

df3=pd.concat([df2, df3], axis=0, sort=False)

当然,这取决于您是要在行上连接数据还是在列上连接数据。axis