重新格式化和写入一个Pandas数据帧的方法

2024-06-02 06:29:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧,我想连接在一起

第一数据帧(stockData)具有多个股票(以下仅用于说明目的),并且具有以下结构:

                           BBG.XLON.VOD.S_LAST  BBG.XLON.VOD.S_VOLUME  BBG.XLON.VOD.S_MKTCAP  
date                                                                           
2001-01-02                  NaN                    NaN                    NaN  
2001-01-03               225.00              444328736            145216.0020  
2001-01-04               239.00              488568000            154251.6643  
2001-01-05               242.25              237936704            156349.2288  
2001-01-08               227.75              658059776            146990.8642  

BBG.XLON.BTA.S_LAST  BBG.XLON.BTA.S_VOLUME  BBG.XLON.BTA.S_MKTCAP  \
date                                                                            
2001-01-02                  572               26605510               37494.60   
2001-01-03                  560               24715470               36708.00   
2001-01-04                  613               52781855               40182.15   
2001-01-05                  630               56600152               41296.50   
2001-01-08                  633               41014402               41493.15  

第二个数据框(reportingData)同样有许多不同股票的更多数据,如下所示:

           unique_stock_id reporting_type
date                                     
2001-01-03  BBG.XLON.VOD.S         2014:A
2001-01-03  BBG.XLON.VOD.S         2014:S2
2001-01-05  BBG.XLON.BTA.S         2014:A

是否有方法返回匹配所有股票的结果数据帧,如下所示:

            BBG.XLON.VOD.S_LAST  BBG.XLON.VOD.S_VOLUME  BBG.XLON.VOD.S_MKTCAP  BBG.XLON.VOD.S_REPORTING    
date                                                                           
2001-01-02                  NaN                    NaN                    NaN                       NaN    
2001-01-03               225.00              444328736            145216.0020                   2014:S2
2001-01-04               239.00              488568000            154251.6643                       NaN    
2001-01-05               242.25              237936704            156349.2288                       NaN    
2001-01-08               227.75              658059776            146990.8642                       NaN    

            BBG.XLON.BTA.S_LAST  BBG.XLON.BTA.S_VOLUME  BBG.XLON.BTA.S_MKTCAP  BBG.XLON.BTA.S_REPORTING    \
date                                                                            
2001-01-02                  572               26605510               37494.60                       NaN    
2001-01-03                  560               24715470               36708.00                       NaN    
2001-01-04                  613               52781855               40182.15                       NaN    
2001-01-05                  630               56600152               41296.50                    2014:A

任何帮助都将不胜感激


Tags: 数据目的datenan股票lastreportings2
1条回答
网友
1楼 · 发布于 2024-06-02 06:29:05

你可以这样做:

In [316]: df1.join(df2['reporting_type'].groupby(level=0).first())
Out[316]:
            BBG.XLON.VOD.S_LAST  BBG.XLON.VOD.S_VOLUME  BBG.XLON.VOD.S_MKTCAP  \
2001-01-02                  NaN                    NaN                    NaN
2001-01-03               225.00            444328736.0            145216.0020
2001-01-04               239.00            488568000.0            154251.6643
2001-01-05               242.25            237936704.0            156349.2288
2001-01-08               227.75            658059776.0            146990.8642

           reporting_type
2001-01-02            NaN
2001-01-03         2014:A
2001-01-04            NaN
2001-01-05            NaN
2001-01-08            NaN

它将首先按索引对df2进行分组,并为每个date获取reporting_type的第一个值

相关问题 更多 >