У меня есть таблица 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'
Как мне это сделать?
df['column'].replace(nan, "", inplace=True)
если хотите, чтобы None было пустой строкой.None
. Ответ Макса работает.df['website'].replace(pd.np.nan, 0, inplace=True)
. Он также не требует включения Numpy, полагаясь на встроенную ссылку Pandas.pd.np.nan
теперь даетFutureWarning: The pandas.np module is deprecated and will be removed from pandas in a future version. Import numpy directly instead
.Вот еще вариант:
df.replace(to_replace=[None], value=np.nan, inplace=True)
источник
Следующая строка заменяется
None
наNaN
:df['column'].replace('None', np.nan, inplace=True)
источник
np.nan
, который имеет dtype float (например:)float64
, в отличие от dtype pandas по умолчаниюobject
для столбца nan.Если вы используете df.replace ([None], np.nan, inplace = True), это изменит все объекты datetime с отсутствующими данными на объекты dtypes. Итак, теперь у вас могут быть неработающие запросы, если вы не измените их обратно на datetime, что может облагаться налогом в зависимости от размера ваших данных.
Если вы хотите использовать этот метод, вы можете сначала определить поля dtype объекта в вашем df, а затем заменить None:
obj_columns = list(df.select_dtypes(include=['object']).columns.values) df[obj_columns] = df[obj_columns].replace([None], np.nan)
источник
DataFrame['Col_name'].replace("None", np.nan, inplace=True)
источник