首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫矢量化,根据日期分配列值,给出另一个具有值和开始日期的数据

熊猫矢量化,根据日期分配列值,给出另一个具有值和开始日期的数据
EN

Stack Overflow用户
提问于 2022-07-19 09:01:37
回答 1查看 38关注 0票数 0

在Pandas中,我有一个包含股票投资和开始日期的dataframe df1

代码语言:javascript
复制
Stock,StartDate,Investment
A,2022-01-01,100
A,2022-02-01,150
B,2022-01-01,90
B,2022-01-15,100
...

那我就有df2

代码语言:javascript
复制
Stock,Date
A,2022-01-01
A,2022-01-02
A,2022-01-05
...
B,2022-01-01
...

我想在df2中添加一列df2,其中装满了从df1获取的投资:给定日期ddf2中的股票S,我希望指定df1的投资日期d >= StartDated < next start date

在这种情况下,预期输出(df2)是:

代码语言:javascript
复制
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
...

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

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

EN

回答 1

Stack Overflow用户

发布于 2022-07-19 09:10:44

使用merge_asof

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73034090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档