首页 > 解决方案 > 如何根据 python 中的多个标准连接两个数据框?

问题描述

我有以下两个数据框:

入围名单:

ticker     date     open    high    low     close   volume
ABC     2000-12-29  0.450   0.455   0.445   0.455   205843.0
ABC     2001-01-31  0.410   0.410   0.405   0.410   381500.0
ABC     2001-02-28  0.380   0.405   0.380   0.400   318384.0
...
ABC     2001-06-30  0.430   0.445   0.430   0.440   104016.0

MCap

Code    EOM       mcRank    MktCap
ABC    29/12/2000   74     1563.967892
ABC    31/03/2001   98     998.156279
ABC    30/06/2001   59     2035.603350

我现在想创建一个新表,将 mcRank 和 MktCap 的列从 MCap 数据帧添加到 Shortlist 数据帧,其中代码和日期匹配。如果日期在 MCap 中的日期之间,则应使用最后一个已知日期。

结果应该是这样的:

ticker     date     open    high    low     close   volume    mcRank    MktCap
ABC     2000-12-29  0.450   0.455   0.445   0.455   205843.0   74     1563.967892
ABC     2001-01-31  0.410   0.410   0.405   0.410   381500.0   74     1563.967892   
ABC     2001-02-28  0.380   0.405   0.380   0.400   318384.0   74     1563.967892
...
ABC     2001-06-30  0.430   0.445   0.430   0.440   104016.0   59     2035.603350

我已经尝试过 pd.concat 和 pd.merge - 但似乎无法获得正确的结果。

标签: pythonpandas

解决方案


你想做的是

首先对齐两种日期格式,您可以将其处理为字符串,这样更容易

第二个 pd.merge 它们,使用 left_on、right_on 和 how='outer' 合并所有内容,并故意创建 NA 值

然后你可以使用 DataFrame.fillna(method='ffill') 根据以前的值填充 na


推荐阅读