簡體   English   中英

一種重新格式化一個熊貓數據幀並將其寫入另一個的方法

[英]A way to reformat and write one pandas dataframe to another

我有兩個數據框,我想將它們連接在一起。

第一個數據框 (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

你可以這樣做:

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進行分組,並將獲取每個datereporting_type的第一個值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM