我有大约12个数据帧,我期待垂直连接,因此我使用以下代码行:
all_data=pd.concat([df1,df2,df3....,df12],axis=0)
打印all_data
时出现的错误
cannot concatenate a non-NDFrame object
认为问题在于type
DataFrame
所有dfs都检查了类型,并且所有这些都是:
class 'pandas.core.frame.DataFrame'
几个小时后'我想'我找到了错误的来源。
虽然所有dfs共享相同的列名,但它们不遵循相同的顺序。例如:
list(df1.columns)=[title1,title2,title3]
虽然不同的df是:
list(df3.columns)=[title2,title3,title1]
我的问题是:
我有没有办法订购每个数据帧的dfs列,以便我可以垂直连接它们而无需单独处理每个数据帧?
我的意思是,我可以只使用一行代码来订购列吗?
提前感谢您阅读我的帖子
答案 0 :(得分:2)
让我们使用列表理解和reindex_axis
:
pd.concat([d.reindex_axis(sorted(d.columns),axis=1) for d in [df1,df2,df3,....df12]])