如何在 Pandas 中将两个 DataFrame 并列堆叠起来?

10

我有两组数据,存储在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)之间的列(例如High)。在Pandas中实现这一点并访问后续的列(例如GOOG的High列和AAPL的High列)的最佳方法是什么?谢谢!

2个回答

12

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

使用df.xs('High', level=1, axis=1)可以同时访问所有股票的High列。 - meteore

4

请看数据框的 join 方法,使用 lsuffix rsuffix 属性创建新的联接列名称。它的工作原理如下:

>>> 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接