python - 创建一个主列相互堆叠的数据框
问题描述
我需要将开盘价和收盘价相互叠加以创建更长的系列。应该有三列,每列股票的名称
我尝试过使用df.stack()
,但它会将股票名称堆叠在一起
df=data[['Open', 'Close']]
df
Open Close
ABBV ABMD ABT ABBV ABMD ABT
Date
2013-12-31 52.99 27.47 38.38 52.81 26.74 38.33
2014-01-02 52.12 26.66 38.09 51.98 26.85 38.23
2014-01-03 52.25 26.84 38.37 52.30 27.06 38.64
2014-01-06 52.70 27.23 39.19 50.39 27.30 39.15
解决方案
默认情况下,stack
堆叠最后一个索引级别,其中包含您案例中的股票名称。指定不同的级别:
df = df.stack(level=0)
df.index.names = ['Date', 'Type']
df = df.reset_index().sort_values(['Date', 'Type'], ascending=[True, False])
结果:
Date Type ABBV ABMD ABT
1 2013-12-31 Open 52.99 27.47 38.38
0 2013-12-31 Close 52.81 26.74 38.33
3 2014-01-02 Open 52.12 26.66 38.09
2 2014-01-02 Close 51.98 26.85 38.23
5 2014-01-03 Open 52.25 26.84 38.37
4 2014-01-03 Close 52.30 27.06 38.64
7 2014-01-06 Open 52.70 27.23 39.19
6 2014-01-06 Close 50.39 27.30 39.15
您可以set_index('Date')
或reset_index(drop=True)
重置最左边的索引列。
推荐阅读
- javascript - Webpack ES6 模块多类应用组织
- apache-kafka - 如何停止 Kafka 中的 sinkTask?
- react-native - 使用 delete() 反应原生推送通知
- angular - 组件由多个 NgModule 声明
- scala - 在 Spark 中重新分区大文件
- excel - 如何使用 vba 粘贴日期值及其格式?
- python - 使用 str.split 构建带有“单行 for”的字符串列表
- azure - SecretClient.GetSecret 总是抛出 400 错误
- php - 如何从 Iphone 和 Mac 获取图像的拍摄时间
- go - reflect.DeepEqual() 返回 false 但切片相同