我有一个包含多列的 pandas DataFrame。我想要完成的是将两列的值组合/堆叠到一列中,将每一列的值一行一行地堆叠起来(不幸的是,这个要求阻止了我使用类似联合的解决方案)。其他剩余列的内容可以复制。非常感谢任何帮助
#Current DataFrame
print(df)
Stock Ticker Index Ticker Price Date
AAPL INDX 100 12/31/2018 8:57
GOOG RSL 123 12/31/2018 8:57
GM COMP 90 12/31/2018 8:57
MMM NIKK 340 12/31/2018 8:57
INVD EUR 30 12/31/2018 8:57
#Desired results
print(df2)
Stock and Bench Price Date
AAPL 100 12/31/2018 8:57
INDX 100 12/31/2018 8:57
GOOG 123 12/31/2018 8:57
RSL 123 12/31/2018 8:57
GM 90 12/31/2018 8:57
COMP 90 12/31/2018 8:57
MMM 340 12/31/2018 8:57
NIKK 340 12/31/2018 8:57
INVD 30 12/31/2018 8:57
EUR 30 12/31/2018 8:57
请您参考如下方法:
您可以将价格和日期列设置为索引,并堆叠股票和代码。最后使用 reset_index 进行一些清理。
df.set_index(['Date', 'Price'])[['Stock Ticker','Index Ticker']].stack()\
.reset_index(2,drop = True).reset_index(name = 'Stock and Bench')
Date Price Stock and Bench
0 12/31/2018 8:57 100 AAPL
1 12/31/2018 8:57 100 INDX
2 12/31/2018 8:57 123 GOOG
3 12/31/2018 8:57 123 RSL
4 12/31/2018 8:57 90 GM
5 12/31/2018 8:57 90 COMP
6 12/31/2018 8:57 340 MMM
7 12/31/2018 8:57 340 NIKK
8 12/31/2018 8:57 30 INVD
9 12/31/2018 8:57 30 EUR
