我需要将开盘价和收盘价相互叠加以创建更长的序列。应该有三列,每一列都是股票的名称
我尝试使用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
答案 0 :(得分:4)
默认情况下,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)
重设最左边的索引列。