Подтвердить что ты не робот

Замените None на NaN в кадре данных панд

У меня есть таблица x:

        website
0   http://www.google.com/
1   http://www.yahoo.com
2   None

Я хочу заменить python None с pandas NaN. Я пробовал:

x.replace(to_replace=None, value=np.nan)

Но я получил:

TypeError: 'regex' must be a string or a compiled regular expression or a list or dict of strings or regular expressions, you passed a 'bool'

Как мне это сделать?

4b9b3361

Ответ 1

Вы можете использовать DataFrame.fillna или Series.fillna, который заменит объект Python None, а не строку 'None'.

import pandas as pd

Для фрейма данных:

df.fillna(value=pd.np.nan, inplace=True)

Для столбца или серии:

df.mycol.fillna(value=pd.np.nan, inplace=True)

Ответ 2

Вот еще один вариант:

df.replace(to_replace=[None], value=np.nan, inplace=True)

Ответ 3

Следующая строка заменяет None на NaN:

df['column'].replace('None', np.nan, inplace=True)

Ответ 4

Если вы используете df.replace([None], np.nan, inplace = True), это изменило все объекты даты и времени с отсутствующими данными на dtypes объекта. Так что теперь у вас могут быть неработающие запросы, если вы не измените их на дату и время, что может облагаться налогом в зависимости от размера ваших данных.

Если вы хотите использовать этот метод, вы можете сначала определить поля dtype объекта в df, а затем заменить None:

obj_columns = list(df.select_dtypes(include=['object']).columns.values)
df[obj_columns] = df[obj_columns].replace([None], np.nan)