2014-08-27 66 views
1

因此我在循环中创建了一些数据框并将它们保存为csv文件。数据框具有相同的列但长度不同。我想能来连接这些数据帧到具有所有列类似通过追加不同大小的列将多个csv文件读入大熊猫数据框中

df1 A B C 0 0 1 2 1 0 1 0 2 1.2 1 1 3 2 1 2

df2 A B C 0 0 1 2 1 0 1 0 2 0.2 1 2

df3 A B C 0 0 1 2 1 0 1 0 2 1.2 1 1 3 2 1 4 4 1 2 2 5 2.3 3 0

我想获得像

一个数据帧

df_big A B C A B C A B C 0 0 1 2 0 1 2 0 1 2 1 0 1 0 0 1 0 0 1 0 2 1.2 1 1 0.2 1 2 1.2 1 1 3 2 1 2 2 1 4 4 1 2 2 5 2.3 3 0 这是可以在熊猫中完成的事情吗?

+0

呃..你看着['concat'](http://pandas.pydata.org/pandas-docs/稳定/生成/ pandas.tools.merge.concat.html)? – EdChum 2014-08-27 19:37:10

回答

1

你可以使用pd.concat

df_big = pd.concat([df1, df2, df3], axis=1) 

产生

 A B C A B C A B C 
0 0.0 1 2 0.0 1 2 0.0 1 2 
1 0.0 1 0 0.0 1 0 0.0 1 0 
2 1.2 1 1 0.2 1 2 1.2 1 1 
3 2.0 1 2 NaN NaN NaN 2.0 1 4 
4 NaN NaN NaN NaN NaN NaN 1.0 2 2 
5 NaN NaN NaN NaN NaN NaN 2.3 3 0 
+0

它是在一个循环,所以技术上我没有df1,df2 ...但我可以创建它们并将它们保存在手中。或者有没有办法在飞行中连接?谢谢你,这很快。 – user3225439 2014-08-27 19:41:35

+0

将所有DataFrame保存在列表中,然后调用'pd.concat(list_of_dfs)'一次来创建'df_big'。 – unutbu 2014-08-27 19:42:54

+0

由于每次调用'pd.concat'都需要分配一个新的内存块,并将这些块中的数据复制到生成的DataFrame中,因此在循环内并置是低效的。这是为什么[字符串连接应该用'str.join'完成,而不是在循环中使用's + = ...']。(http://stackoverflow.com/questions/1349311/python-string -join - 是 - 快于但是-什么,错在这里/ 1350289#1350289)。 – unutbu 2014-08-27 19:46:53