Кажется, проблема в последнем значении, это не 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