Python 3.x 在python中,如何管理介于两个范围之间的值?

Python 3.x 在python中,如何管理介于两个范围之间的值?,python-3.x,pandas,list,dataframe,range,Python 3.x,Pandas,List,Dataframe,Range,我有一个数据帧df: A 1 12 2 15.5 3 20.5 4 30.5 5 15 范围: 功能: 结果应该如下所示: df['A'].apply(lambda x: min_max_range(x,x_range)) A B 1 12 5 2 15 5 3 20.5 4 4 5.5 4 5 15.5 4 但我得到的是: A B 1

我有一个数据帧
df

     A  
1   12       
2   15.5
3   20.5
4   30.5
5   15
范围: 功能: 结果应该如下所示:

df['A'].apply(lambda x: min_max_range(x,x_range))

     A      B
1   12      5 
2   15      5
3   20.5    4
4   5.5     4
5   15.5    4
但我得到的是:

     A      B
1   12      4 
2   15      5
3   20.5   NA
4   5.5    NA
5   15.5   NA

我知道为什么会发生这种情况,它没有考虑范围(0,5)=[0,1,2,3,4,5]和范围(6,10)=[6,7,8,9,10]之间的值,现在它没有考虑范围(0,5)=[0,1,2,3,4,5]之间的值。如果有一个值
5.5或5.8
。那么它不会考虑它,并返回<代码> n>代码>。如何避免这种情况?

问题似乎是最后一个值,它不是
5
,而是
4
,所以在缺少最后一个值的范围内:

print (list(range(0,5)))
[0, 1, 2, 3, 4]
print (list(range(6,10)))
[6, 7, 8, 9]
print (list(range(11,15)))
[11, 12, 13, 14]
我认为有必要在第二个整数的范围内添加一个值,如:

print (list(range(0,6)))
[0, 1, 2, 3, 4, 5]
print (list(range(6,11)))
[6, 7, 8, 9, 10]
print (list(range(11,16)))
[11, 12, 13, 14, 15]
更改值后,没有
NaN
s:

x_range = [list(range(0,6)),list(range(6,11)),list(range(11,16)),
           list(range(16,21)),list(range(21,26))]

def min_max_range(x,y):
    for a in y:
        if int(x) in a:
            min_val = min(a)
            max_val = max(a)+1
            return max_val - min_val

df['B'] = df['A'].apply(lambda x: min_max_range(x,x_range))
print (df)
      A  B
1  12.0  5
2  15.0  5
3  20.5  6
4   5.5  6
5  15.5  5

但我的问题是,如果范围(0,6)给出[0,1,2,3,4,5],范围(6,10)=[,6,7,8,9]。现在,5和6之间的值会发生什么变化,即“5.1-5.9”。@astroluv然后在
范围(0,6)
print (list(range(0,6)))
[0, 1, 2, 3, 4, 5]
print (list(range(6,11)))
[6, 7, 8, 9, 10]
print (list(range(11,16)))
[11, 12, 13, 14, 15]
x_range = [list(range(0,6)),list(range(6,11)),list(range(11,16)),
           list(range(16,21)),list(range(21,26))]

def min_max_range(x,y):
    for a in y:
        if int(x) in a:
            min_val = min(a)
            max_val = max(a)+1
            return max_val - min_val

df['B'] = df['A'].apply(lambda x: min_max_range(x,x_range))
print (df)
      A  B
1  12.0  5
2  15.0  5
3  20.5  6
4   5.5  6
5  15.5  5