类型错误:无法连接类型为"<类'列表'>"的对象;只有系列和数据帧对象有效



我有一个名为d0, d1, d2,…d9的10个数据框架的列表。都有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

我使用了pd中建议的解决方案。pandas中的concat给出TypeError:不能连接类型为'<类为&#39;str&#39;>';只有Series和DataFrame对象是有效的;但是,得到了上面的错误。

s1已经是一个列表。你做的事叫警察。concat与带有DataFrames的列表的列表连接,这是pandas不允许的。你应该这样做:

s2=pd.concat(s1)

@ThomasQ是正确的,dataframes列表的连接应该工作。我也遇到了同样的问题,检查了我的dataframes的类型,发现其中一个是pandas系列的列表,而不是正确的df

所以我首先把序列列表转换成一个数据帧:

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

然后在一个包含两个有效数据帧的列表上重复这个连接:

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

axis,当然,取决于你是想连接你的数据行还是列。

最新更新