Я пытаюсь обновить столбец в моем фрейме данных на основе тестирования и результатов значений в трех столбцах (3 теста).
Пример кода:
df_test = pd.DataFrame([('?',2.0,1,0,0,0), (None,2.0,1,0,0,0),
(None,2.0,0,0,0,0),(None,2.0,0,1,0,0),
('?',2.0,0,0,0,0)], columns=['a','b','c','d','e','f'])
df_test.head()
Когда я попробую следующее df_test['g'] = np.where(np.logical_and(df_test['a'] != 'None', df_test['c'] == 0, df_test['d'] == 0), True, False).astype(int)
Я получаю сообщение об ошибке TypeError: return arrays must be of ArrayType
Поэтому я пытаюсь сделать следующее:
df_test = pd.DataFrame([('?',2.0,1,0,0,0), (None,2.0,1,0,0,0),
(None,2.0,0,0,0,0),(None,2.0,0,1,0,0),
('?',2.0,0,0,0,0)], columns=['a','b','c','d','e','f'])
df_test['g'] = np.where(np.logical_and(df_test['a'] != None,
np.logical_and(df_test['c'] == 0,
df_test['d'] == 0)),
True, False).astype(int)
df_test.head()
И в строке 2, где я ожидал увидеть 0, я вижу 1, в то время как строка 4 кажется правильной. Тест 1 (a) должен быть ложным, в то время как второй (c) и третий (d) тесты должны быть True, True. Ложь == Истина == Истина Ложь.
a b c d e f g
0 ? 2.0 1 0 0 0 0
1 None 2.0 1 0 0 0 0
2 None 2.0 0 0 0 0 1
3 None 2.0 0 1 0 0 0
4 ? 2.0 0 0 0 0 1
Мне нужен способ оценить 3 теста и вернуть true или false как целое число.