【问题标题】:Lookup values by finding corresponding date between two-column range in Python通过在 Python 中查找两列范围之间的对应日期来查找值
【发布时间】:2021-09-24 17:02:10
【问题描述】:

我正在尝试通过在 df2 中搜索 Date 介于 From 和 To 之间的行,然后在 ISIN 中返回相应的值,向下面的 df1 添加一列。谁能帮我这个?我在挣扎!

谢谢!

df1:

    Event_Type  Date
3838    NL  2011-11-01
3839    NL  2011-01-25
3840    NL  2011-08-02
3841    NL  2011-01-03
3842    NL  2011-08-03
3843    NL  2011-12-04
3844    NL  2011-04-27
3845    NL  2011-10-05
3846    NL  2011-06-14
3847    NL  2011-06-21
3848    NL  2011-12-07
3849    NL  2011-07-26
3850    NL  2011-09-13
3851    NL  2011-09-27

df2:

Sov Tenor   Bond    From    To  Bond Name   ISIN    Nom/Inf
DE  10y EI650542 Corp   2011-06-24  2011-08-19  DBR 3 1/4 07/04/21  DE0001135440    Nominal
DE  10y EI785264 Corp   2011-08-26  2011-11-18  DBR 2 1/4 09/04/21  DE0001135457    Nominal
DE  10y EI879238 Corp   2011-11-25  2012-06-04  DBR 2 01/04/22  DE0001135465    Nominal
DE  10y EJ120241 Corp   2012-04-13  2012-08-31  DBR 1 3/4 07/04/22  DE0001135473    Nominal
DE  10y EJ342271 Corp   2012-07-09  2013-11-01  DBR 1 1/2 09/04/22  DE0001135499    Nominal
DE  10y EJ506625 Corp   2013-01-18  2013-05-17  DBR 1 1/2 02/15/23  DE0001102309    Nominal
DE  10y EJ677578 Corp   2013-05-24  2013-06-09  DBR 1 1/2 05/15/23  DE0001102317    Nominal
DE  10y EJ815896 Corp   2013-09-13  2014-01-24  DBR 2 08/15/23  DE0001102325    Nominal
DE  10y EK037802 Corp   2014-01-31  2014-05-16  DBR 1 3/4 02/15/24  DE0001102333    Nominal
DE  10y EK272890 Corp   2014-05-23  2014-05-09  DBR 1 1/2 05/15/24  DE0001102358    Nominal
DE  10y EK469437 Corp   2014-12-09  2015-09-01  DBR 1 08/15/24  DE0001102366    Nominal
DE  10y EK684154 Corp   2015-01-16  2015-10-07  DBR 0 1/2 02/15/25  DE0001102374    Nominal
DE  10y AF205634 Corp   2015-07-17  2016-08-01  DBR 1 08/15/25  DE0001102382    Nominal
DE  10y JV503423 Corp   2016-01-15  2016-08-07  DBR 0 1/2 02/15/26  DE0001102390    Nominal
DE  10y LW743065 Corp   2016-07-15  2017-06-01  DBR 0 08/15/26  DE0001102408    Nominal
DE  10y AL997549 Corp   2017-01-13  2017-07-07  DBR 0 1/4 02/15/27  DE0001102416    Nominal
DE  10y AO223542 Corp   2017-07-14  2018-05-01  DBR 0 1/2 08/15/27  DE0001102424    Nominal
DE  10y AQ584649 Corp   2018-12-01  2018-06-07  DBR 0 1/2 02/15/28  DE0001102440    Nominal
DE  10y AT428688 Corp   2018-07-13  2019-04-01  DBR 0 1/4 08/15/28  DE0001102457    Nominal
DE  10y AW416188 Corp   2019-11-01  2019-05-07  DBR 0 1/4 02/15/29  DE0001102465    Nominal
DE  10y AZ461235 Corp   2019-12-07  2020-03-01  DBR 0 08/15/29  DE0001102473    Nominal
DE  10y ZP220656 Corp   2020-10-01  2020-12-06  DBR 0 02/15/30  DE0001102499    Nominal
DE  10y BJ948280 Corp   2020-06-19  2021-01-01  DBR 0 08/15/30  DE0001102507    Nominal
DE  10y BN261261 Corp   2021-08-01  2021-11-06  DBR 0 02/15/31  DE0001102531    Nominal
DE  10y BP980366 Corp   2021-06-18  2021-09-17  DBR 0 08/15/31  DE0001102564    Nominal

【问题讨论】:

  • 你试过什么?任何代码出来,甚至不工作?

标签: python pandas dataframe


【解决方案1】:

这是你要找的吗?

df3 = pd.merge(df.assign(j = 1),df2.assign(j = 1))
df3.loc[df3['Date'].between(df3['From'],df3['To'])]

【讨论】:

    猜你喜欢
    • 2022-10-15
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 2021-09-18
    • 2016-10-24
    • 1970-01-01
    相关资源
    最近更新 更多