[英]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
進行分組,並將獲取每個date
的reporting_type
的第一個值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.