我有两个数据框,我想加入。
第一个数据框(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
非常感谢任何帮助
答案 0 :(得分:1)
你可以这样做:
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
进行分组,然后为每个reporting_type
date
的第一个值