如何在 Pandas 中将两个 DataFrame 堆叠在一起?
Posted
技术标签:
【中文标题】如何在 Pandas 中将两个 DataFrame 堆叠在一起?【英文标题】:How do I stack two DataFrames next to each other in Pandas? 【发布时间】: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 列)的最佳方法是什么。谢谢!
【问题讨论】:
【参考方案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
方法,使用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
【讨论】:
以上是关于如何在 Pandas 中将两个 DataFrame 堆叠在一起?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Pandas 中将 DataFrame 的行迭代为 Series?
如何在 Streamlit 中将 Pandas DataFrame 下载到 CSV 文件
python - 如何在Python中将pandas DataFrame与None进行比较?
如何在for循环中将字符串值添加到Pandas Dataframe?