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

2024-10-03 11:21:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧,我试图在一个键上连接它们,在某一行没有匹配的行,所以我使用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

Tags: 数据方法代码dateindexcashdf1df2
1条回答
网友
1楼 · 发布于 2024-10-03 11:21:31

^{}'bfill'方法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

相关问题 更多 >