我试图创建一个python函数,该函数接受2个数据帧(dfA,dfB),并根据它们的日期列合并它们。合并时,B在A中查找与给定日期相等或早于给定日期的最近日期。这是为了防止dfAB中的数据展望未来(这就是为什么dfAB.iloc[4]['date']=1/4/21而不是1/9/21)
dfA
date i
0 1/1/21 0
1 1/3/21 0
2 1/4/21 0
3 1/10/21 0
dfB
date j k
0 1/1/21 0 0
1 1/2/21 0 0
2 1/3/21 0 0
3 1/9/21 0 0
4 1/12/21 0 0
dfAB(注意,对于dfB的每一行,都有一行dfAB)
date j k i
0 1/1/21 0 0 0
1 1/1/21 0 0 0
2 1/3/21 0 0 0
3 1/4/21 0 0 0
4 1/10/21 0 0 0
列i、j、k中的值只是任意值
为此,我们可以使用
pd.merge_asof
和一些技巧将date
列从dfB
推回到dfA
的date
列这里
pd.merge_asof
正在做繁重的工作。我们正在向后合并dfB
的行with the rows of
dfA. This should make it so the data in any row of
dfABonly has data from equal to or before the corresponding row in
dfB. We do a little song and dance to copy the
datecolumn in
dfAand then copy that over to the
datecolumn in
dfAB`以获得所需的输出我并不100%清楚您是否需要
direction='backward'
,因为您所有的示例数据都是0
,但是如果它看起来不正确,您可以始终切换到direction='forward'
相关问题 更多 >
编程相关推荐