我有两个数据框,我正在尝试将它们连接到一个键上,并且在某一行没有匹配的行,所以我使用的是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
答案 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