У меня есть кадр данных, который выглядит следующим образом:
data = np.array([[5, 'red', 2,6, 8, 10],
[11, 'red', 3,9,6,15],
[8, 'blue', 0, 3, 5, 10],
[2, 'blue', 1, 2, 3, 4]])
df = pd.DataFrame(data, columns = ['A','B','red_lower', 'red_upper', 'blue_lower', 'blue_upper'])
A B red_lower red_upper blue_lower blue_upper
0 5 red 2 6 8 10
1 11 red 3 9 6 15
2 8 blue 0 3 5 10
3 2 blue 1 2 3 4
Я хотел бы создать дополнительный столбец, который сообщает мне, находится ли значение в столбце A в диапазоне цветаприведено в столбце B. Например, в строке 0, поскольку 5 обозначено красным цветом, я проверю, находится ли 5 между 2 и 6. Это так, поэтому у нового столбца будет 1.
Желаемый результат:
A B red_lower red_upper blue_lower blue_upper in_range
0 5 red 2 6 8 10 1
1 11 red 3 9 6 15 0
2 8 blue 0 3 5 10 1
3 2 blue 1 2 3 4 0
Я пытался написать цикл, но получаю много серийных ошибок.Я действительно не хочу разделять фрейм данных (по цвету), но, может быть, это путь?(в моем реальном кадре данных есть шесть разных «цветов», а не только два).
Спасибо!
РЕДАКТИРОВАТЬ: бонус, если у нас есть дополнительный столбец, скажите мне, если значение вышеили ниже диапазона!Например, в строке 1 11 находится за пределами диапазона, поэтому он слишком высок.Таблица должна выглядеть так:
A B red_lower red_upper blue_lower blue_upper in_range
0 5 red 2 6 8 10 inside
1 11 red 3 9 6 15 above
2 8 blue 0 3 5 10 inside
3 2 blue 1 2 3 4 below