Pandas向量化,给定另一个具有值和开始日期的数据框架,根据日期分配列值



在Pandas中,我有一个包含股票投资和开始日期的数据框架df1:

Stock,StartDate,Investment
A,2022-01-01,100
A,2022-02-01,150
B,2022-01-01,90
B,2022-01-15,100
...

然后我有一个df2:

Stock,Date
A,2022-01-01
A,2022-01-02
A,2022-01-05
...
B,2022-01-01
...

我想在df2中添加一列Investment,其中包含来自df1的投资:给定df2中的日期d和股票S,我想将df1中的投资分配给d>=StartDated < next start date

本例中的预期输出(df2)为:

Stock,Date,Investment
A,2022-01-01,100
A,2022-01-02,100
A,2022-01-05,100
...
A,2022-01-31,100
A,2022-02-01,150
A,2022-02-02,150
...
B,2022-01-01,90
B,2022-01-02,90
...
B,2022-01-14,90
B,2022-01-15,100
B,2022-01-16,100
...

这显然可以通过循环完成,但我正在寻找一种更有效的方法,可能使用向量化。

做这件事最有效的方法是什么?

iuc usemerge_asof:

print (df1)
a          b    c
0  A 2022-01-01  100
1  A 2022-02-01  150
2  B 2022-01-01   90
3  B 2022-01-15  100

print (df2)
a          b
0  A 2022-01-01
1  A 2022-01-02
2  A 2022-01-05
3  B 2022-01-01
df = pd.merge_asof(df2.sort_values('b'), df1.sort_values('b'), on='b', by='a')
print (df)
a          b    c
0  A 2022-01-01  100
1  B 2022-01-01   90
2  A 2022-01-02  100
3  A 2022-01-05  100

相关内容

  • 没有找到相关文章

最新更新