Я пытаюсь преобразовать следующий DataFrame (содержит несколько 'N / As') в плавающее значение, чтобы я мог выполнить операцию процентного изменения:
d = pd.DataFrame({"A":['N/A','$10.00', '$5.00'],
"B":['N/A', '$10.00', '-$5.00']})
В конечном счете, я бы хотел, чтобы результат был:
(ОБНОВЛЕНИЕ: я не хочу удалять исходные значения N / A. Я хотел бы сохранить их там как заполнители.)

Поскольку нет никаких флагов для работы с отрицательными числами, я не могу использовать:
pct_change(-1)
Итак, мне нужно использовать:
d['A'].diff(-1)/d['A'].shift(-1).abs()
Но я получаю ошибку:
TypeError: unsupported operand type(s) for -: 'str' and 'str'
Для первого шага я пытаюсь преобразовать данные из объекта / строки в плавающее, но вывод неожиданный (для меня). Я получаю плавающие «NaNs» вместо действительного числа.
>d['A_float'] = pd.to_numeric(d['A'], errors='coerce')
>d
A B A_float
0 N/A N/A NaN
1 $10.00 -$100.00 NaN
2 $5.00 -$5.00 NaN
>d.dtypes
A object
B object
A_float float64
dtype: object
В качестве простого теста я попытался вычесть '1' из значения, но все равно получил число с плавающей точкой 'NaN'.
>d['A_float_minus1_test'] = pd.to_numeric(d['A'], errors='coerce')-1
>d
A B A_float A_float_minus1_test
0 N/A N/A NaN NaN
1 $10.00 -$100.00 NaN NaN
2 $5.00 -$5.00 NaN NaN
>d.dtypes
A object
B object
A_float float64
A_float_minus1_test float64
dtype: object
Есть ли простой способ получить следующий результат? Я думаю о том, чтобы индивидуально изменить каждый столбец DataFrame на float, а затем выполнить операцию. Должен быть более простой способ.
Желаемый вывод:
(ОБНОВЛЕНИЕ: я не хочу удалять исходные значения N / A. Я хотел бы сохранить их там как заполнители.)

Спасибо!