0

Преобразование pandas.Series из типа object в float с заменой ошибок на NaN

11

Описание проблемы:

Я столкнулся с проблемой при работе с библиотекой pandas в Python. У меня есть следующий код:

In [2]: a = pd.Series([1, 2, 3, 4, '.'])

In [3]: a
Out[3]: 
0    1
1    2
2    3
3    4
4    .
dtype: object

Я пытаюсь преобразовать элементы серии a в тип float64 с использованием метода astype(), но мне нужно, чтобы значения, которые не могут быть преобразованы (например, строка '.'), заменялись на NaN. Я использую следующий код для этого:

In [8]: a.astype('float64', raise_on_error=False)
Out[8]: 
0    1
1    2
2    3
3    4
4    .
dtype: object

К сожалению, результат не соответствует моим ожиданиям: метод astype() не преобразует ошибочные значения в NaN, а просто оставляет их как есть. Я ожидал, что будет опция, позволяющая выполнить преобразование с заменой ошибочных значений на NaN.

Есть ли способ добиться такого поведения в pandas? Ваши советы и рекомендации будут очень полезны!

1 ответ(ов)

0

В вашем коде вы пытаетесь использовать метод convert_objects() для преобразования элементов в числовой формат. Однако стоит отметить, что данный метод устарел и его не рекомендуется использовать. Вместо этого вы можете применить метод pd.to_numeric(), чтобы получить желаемый результат.

Вот пример, как это можно сделать:

import pandas as pd

# Создаем серию
s = pd.Series([1, 2, 3, 4, '.'])

# Преобразуем элементы в числовой формат, игнорируя ошибки
result = pd.to_numeric(s, errors='coerce')

print(result)

Этот код выдаст следующий результат:

0    1.0
1    2.0
2    3.0
3    4.0
4    NaN
dtype: float64

Как видите, строка '.' не может быть преобразована в число и становится NaN, что соответствует приведенному вами выводу.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь