提问人:vp_050 提问时间:10/26/2021 更新时间:9/17/2023 访问量:53386
TypeError:无法连接类型为“<class 'list'>”的对象;只有 Series 和 DataFrame obj 有效
TypeError: cannot concatenate object of type '<class 'list'>'; only Series and DataFrame objs are valid
问:
我有一个名为 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 有效;但是,出现了上述错误。
答:
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
评论