Ваша ситуация : ваш фрейм данных называется f
и содержит 3 столбца с числовыми значениями.Столбцы называются 'A'
, 'B'
и 'C'
.
Я рекомендую делать это, создавая логические столбцы и комбинируя их в соответствии с вашими классами.Вероятно, есть еще много способов сделать это, также намного более изящные.Я думаю, что это решение так же просто, как они получают.По сути, у вас есть три условия, которые могут быть выполнены:
check_a = f['A'] >= 7
check_b = (f['B'] == 3) | (f['B'] == 4)
check_c = (22 <= f['C'] <= 27)
Комбинируя эти 3 проверки, вы получите 8 вариантов (~
отрицает логические значения, поэтому в основном переворачивает их значения):
f['class_1'] = check_a & check_b & check_c
f['class_2'] = check_a & check_b & ~check_c
f['class_3'] = ~check_a & check_b & check_c
f['class_4'] = check_a & ~check_b & check_c
f['class_5'] = check_a & ~check_b & ~check_c
f['class_6'] = ~check_a & check_b & ~check_c
f['class_7'] = ~check_a & ~check_b & check_c
f['class_8'] = ~check_a & ~check_b & ~check_c
Одна из причин, по которой ваш код не работает, заключается в том, что вы проверяете, являются ли значения в столбце 'C'
меньше 22 и больше 27. Это никогда не может быть правдой.