如果值在数据帧连接中不匹配,如何替换下一行中的值

时间:2018-03-07 08:33:44

标签: python pandas

我有两个数据框,我正在尝试将它们连接到一个键上,并且在某一行没有匹配的行,所以我使用的是bfill方法,但它填充了我要填充的输出中的值它是另一个数据帧的下一个值。

DF1:

rcd_date  
2012-01-30
2012-02-29
2012-03-30
2012-04-30

DF2:

nav_date   mfv_gross
2012-01-30 10.00
2012-01-31 10.00
2012-02-01 10.17
2012-02-06 10.50
2012-02-29 11.06
2012-03-31 10.68
2012-04-01 10.76
2012-04-28  10.87
2012-04-29  10.94
2012-04-30  10.97

我的代码:

joined = cash_df.set_index('rcd_date').join(nav_data.set_index('nav_date')).fillna(method='bfill')

输出:

rcd_date    mfv_gross
2012-01-30  10.00
2012-02-29  11.06
2012-03-30  10.97
2012-04-30  10.97

期望的输出:

rcd_date    mfv_gross
2012-01-30  10.00
2012-02-29  11.06
2012-03-30  10.68
2012-04-30  10.97

1 个答案:

答案 0 :(得分:1)

'bfill'的最短和最长日期创建reindex之前,使用date_range方法df1['rcd_date']

rng = pd.date_range(df1['rcd_date'].min(), df1['rcd_date'].max())
df2 = df2.set_index('nav_date').reindex(rng, method='bfill')
df = df1.set_index('rcd_date').join(df2)
print (df)
            mfv_gross
rcd_date             
2012-01-30      10.00
2012-02-29      10.78
2012-03-30      10.68
2012-04-30      10.97