В настоящее время я испытываю неожиданное поведение в numpy. Я пытаюсь добавить столбец в DataFrame, который делает некоторые математические на двух других столбцах. Эти столбцы также содержат несколько строк «N / A».
import pandas as pd
import numpy as np
my_list = []
my_list.append({'Value A':1, 'Value B':2})
my_list.append({'Value A':6, 'Value B':4})
my_list.append({'Value A':7, 'Value B':5})
my_list.append({'Value A':'N/A', 'Value B':6})
my_list.append({'Value A':12, 'Value B':10})
my_list.append({'Value A':2, 'Value B':2})
my_list.append({'Value A':9, 'Value B':'N/A'})
my_list.append({'Value A':8, 'Value B':3})
my_list.append({'Value A':22, 'Value B':6})
my_df = pd.DataFrame(my_list)
Затем я пытаюсь сделать заявление np.where () по этому вопросу. Сначала я проверяю, что, прежде чем приступить к математике, оба значения не равны 'N / A', потому что я конвертирую их в числа с плавающей точкой, если выполняется условие:
my_df['New'] = np.where((my_df['Value A'].str != 'N/A') &
(my_df['Value B'].str != 'N/A'),
my_df['Value A'].astype(float) - my_df['Value B'].astype(float),
'N/A')
Однако, когда это выполняется, я получаю сообщение об ошибке на numpy.where:
ValueError: could not convert string to float: N/A
У меня сложилось впечатление, что преобразование даже не должно было произойти, учитывая, что условие должно было быть не выполнено, когда одно из значений было «N / A».
Может ли кто-нибудь поделиться какой-либо проницательностью?