2014-08-27 70 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