问题
I have table x
:
website
0 http://www.google.com/
1 http://www.yahoo.com
2 None
I want to replace python None with pandas NaN. I tried:
x.replace(to_replace=None, value=np.nan)
But I got:
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'
How should I go about it?
回答1:
You can use DataFrame.fillna or Series.fillna which will replace the Python object None
, not the string 'None'
.
import pandas as pd
import numpy as np
For dataframe:
df = df.fillna(value=np.nan)
For column or series:
df.mycol.fillna(value=np.nan, inplace=True)
回答2:
Here's another option:
df.replace(to_replace=[None], value=np.nan, inplace=True)
回答3:
The following line replaces None
with NaN
:
df['column'].replace('None', np.nan, inplace=True)
回答4:
If you use df.replace([None], np.nan, inplace=True), this changed all datetime objects with missing data to object dtypes. So now you may have broken queries unless you change them back to datetime which can be taxing depending on the size of your data.
If you want to use this method, you can first identify the object dtype fields in your df and then replace the None:
obj_columns = list(df.select_dtypes(include=['object']).columns.values)
df[obj_columns] = df[obj_columns].replace([None], np.nan)
回答5:
DataFrame['Col_name'].replace("None", np.nan, inplace=True)
来源:https://stackoverflow.com/questions/23743460/replace-none-with-nan-in-pandas-dataframe