我有这样每个值分配给一个范围上数据帧
[(1,3), (3,5), (5,7), (7,9)]
阵列states
和这样
l y
0 a 8
1 b 3
2 c 7
3 d 4
4 e 1
我需要分配属于范围的索引上states
一个数据帧df
得到像这样的东西
l y state
0 a 8 3
1 b 3 0
2 c 7 2
3 d 4 1
4 e 1 0
对于每个范围在states
,该y
值必须属于范围(start, end]
除了在第一范围,其中1
不属于(1,3)
到目前为止,我有这个
def asign(x):
for a,b in states:
if x>=a and x<=b:
return states.index((a,b))
df['state'] = df.y.apply(asign)
,但我需要一个更快,更有效的方法更大的数据框架,任何想法?