Pandas 根据范围和日期连接两个数据框

Sal*_*lih 4 python dataframe pandas

我有两个这样的数据框:

DATE        MAX_AMOUNT  MIN_AMOUNT  MAX_DAY  MIN_DAY    RATE
01/09/2022  20          15          10       5          0.01
01/09/2022  25          20          15       10         0.02
03/09/2022  30          10           5       3          0.03
03/09/2022  40          30          20       5          0.04
04/09/2022  10           5          10       1          0.05


ID  DATE        AMOUNT  DAY 
1   01/09/2022  18      7   
2   01/09/2022  22      11  
3   01/09/2022  30      20  
4   03/09/2022  35      10  
5   04/09/2022  35      10  
Run Code Online (Sandbox Code Playgroud)

我想根据日期将 RATE 值带到第二个 df 中。此外,相关日期中的 AMOUNT 和 DAY 值必须在适当的范围内(MAX_AMOUNT 和 MIN_AMOUNT、MAX_DAY 和 MIN_DAY)。

期望的输出如下:

ID  DATE        AMOUNT  DAY RATE
1   01/09/2022  18      7   0.01
2   01/09/2022  22      11  0.02
3   01/09/2022  30      20  
4   03/09/2022  35      10  0.04
5   04/09/2022  35      10  
Run Code Online (Sandbox Code Playgroud)

你能帮我解决这个问题吗?

Cod*_*ent 5

# Merge df1 and df2 using your custom condition
match = df1.merge(df2, on="DATE").query("MIN_AMOUNT <= AMOUNT <= MAX_AMOUNT and MIN_DAY <= DAY <= MAX_DAY")

# Now join any matching rate back to df2
result = df2.merge(match[["ID", "RATE"]], on="ID", how="left")
Run Code Online (Sandbox Code Playgroud)