我有一个名为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:不能连接类型为'<类为'str'>';只有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
,当然,取决于你是想连接你的数据行还是列。