【问题标题】:How do I stack two DataFrames next to each other in Pandas?如何在 Pandas 中将两个 DataFrame 堆叠在一起?
【发布时间】:2012-10-16 07:14:13
【问题描述】:

我在 DataFrames 中有两组股票数据:

> 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

并且我想将它们彼此堆叠在一个 DataFrame 中,以便我可以访问和比较股票(GOOG 与 AAPL)中的列(例如高)?在 Pandas 中执行此操作并访问后续列(例如 GOOG 的 High 列和 AAPL 的 High 列)的最佳方法是什么。谢谢!

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    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 列。
    【解决方案2】:

    查看数据框的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
    

    【讨论】:

      猜你喜欢
      • 2015-02-15
      • 2018-06-19
      • 2018-11-08
      • 2021-09-15
      • 2014-11-25
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 2022-12-21
      相关资源
      最近更新 更多