遍历行以检查数组的值是否存在于两列之间

zil*_*man 6 python pandas

我有一个数据框和一个这样的数组:

df
x y z
1 10 1
10 20 2
20 30 3
30 40 4
40 50 5

my_array= 5 35 36 40 41 45 46 47 48
Run Code Online (Sandbox Code Playgroud)

我如何遍历数据帧,以便,如果my_array存在于x和之间,则将保留行y。最终的 df 将是:

x y z
1 10 1
30 40 4
40 50 5
Run Code Online (Sandbox Code Playgroud)

我试过了 df=df[(my_array <= df['x']) and (df['y'] <= my_array)]

但它给出了值错误;Lengths must match to compare.

my_array 的长度大于行数。有什么帮助吗?

Shu*_*rma 5

麻木广播

df[((df['x'].values[:, None] <= my_array) &
    (df['y'].values[:, None] >= my_array)).any(1)]
Run Code Online (Sandbox Code Playgroud)
    x   y  z
0   1  10  1
3  30  40  4
4  40  50  5
Run Code Online (Sandbox Code Playgroud)