2012-10-26 89 views
5

我有兩套股票數據的DataFrames:如何在Pandas中將兩個DataFrame堆疊在一起?

> GOOG.head() 
      Open High Low 
Date                    
2011-01-03 21.01 21.05 20.78 
2011-01-04 21.12 21.20 21.05 
2011-01-05 21.19 21.21 20.90 
2011-01-06 20.67 20.82 20.55 
2011-01-07 20.71 20.77 20.27 

AAPL.head() 
       Open High  Low 
Date        
2011-01-03 596.48 605.59 596.48 
2011-01-04 605.62 606.18 600.12 
2011-01-05 600.07 610.33 600.05 
2011-01-06 610.68 618.43 610.05 
2011-01-07 615.91 618.25 610.13 

,我想將它們堆疊接下來的兩個彼此在一個單一的數據幀,所以我可以訪問並比較不同股票的列(如高)(GOOG VS 。AAPL)?在熊貓中訪問後續專欄的最佳方式是什麼(例如,GOOG的高欄和AAPL的高欄)。謝謝!

回答

5

pd.concat也是一種選擇

In [17]: pd.concat([GOOG, AAPL], keys=['GOOG', 'AAPL'], axis=1) 
Out[17]: 
      GOOG     AAPL 
      Open High Low Open High  Low 
Date 
2011-01-03 21.01 21.05 20.78 596.48 605.59 596.48 
2011-01-04 21.12 21.20 21.05 605.62 606.18 600.12 
2011-01-05 21.19 21.21 20.90 600.07 610.33 600.05 
2011-01-06 20.67 20.82 20.55 610.68 618.43 610.05 
2011-01-07 20.71 20.77 20.27 615.91 618.25 610.13 
+0

'df.xs( '高',級別= 1,軸= 1)'訪問'在High'列對所有股票一次平行。 – meteore

3

查看數據幀的join方法,使用lsuffixrsuffix屬性爲連接列創建新名稱。它的工作原理是這樣的:

>>> x 
      A   B   C 
0 0.838119 -1.116730 0.167998 
1 -1.143761 0.051970 0.216113 
2 -0.614441 0.208978 -0.630988 
3 0.114902 -0.248791 -0.503172 
4 0.836523 -0.802074 1.478333 
>>> y 
      A   B   C 
0 -0.455859 -0.488645 -1.618088 
1 -2.295255 0.524681 1.021320 
2 -0.484612 1.101463 -0.081476 
3 -0.475076 0.915797 -0.998777 
4 -0.847538 0.057044 1.053533 
>>> x.join(y, lsuffix="_x", rsuffix="_y") 
     A_x  B_x  C_x  A_y  B_y  C_y 
0 0.838119 -1.116730 0.167998 -0.455859 -0.488645 -1.618088 
1 -1.143761 0.051970 0.216113 -2.295255 0.524681 1.021320 
2 -0.614441 0.208978 -0.630988 -0.484612 1.101463 -0.081476 
3 0.114902 -0.248791 -0.503172 -0.475076 0.915797 -0.998777 
4 0.836523 -0.802074 1.478333 -0.847538 0.057044 1.053533 
相關問題