寻求一种简单的方法来命令我的dfs连接它们

时间:2017-07-20 20:49:59

标签: python pandas dataframe

我有大约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列,以便我可以垂直连接它们而无需单独处理每个数据帧?

我的意思是,我可以只使用一行代码来订购列吗?

提前感谢您阅读我的帖子

1 个答案:

答案 0 :(得分:2)

让我们使用列表理解和reindex_axis

来尝试
pd.concat([d.reindex_axis(sorted(d.columns),axis=1) for d in [df1,df2,df3,....df12]])