Skip to main content
 首页 » 编程设计

python之将两列等长合并为一列

2025年05月04日12softidea

我有一个包含多列的 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