pandas - 在列上应用函数,使用第二个数据框作为函数的输入?

pandas - apply a function on column, using a second dataframe as an input for the function?

寻找最快和最 pandas 集中的方式来执行以下操作:

support=

Values Confidence R/S
10      3          S
20      6          S
40      10         S
35      12         S
df = 

name    strike
xyz      12
dfg      6
ghf      40

目标:获取从supportdf最近的大于0的行。

预期输出:

df = 

name    strike   support
xyz      12      [10, 3, S, 2]
dfg      6       [0, 0, S, 0]   # as there is no > 0 value when subtracting strike from support
ghf      40      [35, 12, S, 5]

奖励:将列扩展到相关列中。

我可以通过遍历攻击来做到这一点,想知道是否有 better/faster 方法来实现我想做的事情。

使用merge_asof

pd.merge_asof(df.sort_values('strike'),       # must be sorted by key
              support.sort_values('Values'),  # must be sorted by key
              left_on='strike', 
              right_on='Values', 
              direction='backward',           # default, so `Values <= strike`
              allow_exact_matches=False       # so that `Values != strike`
             )

输出:

  name  strike  Values  Confidence  R/S
0  dfg       6     NaN         NaN  NaN
1  xyz      12    10.0         3.0    S
2  ghf      40    35.0        12.0    S