我有表x
:
website
0 http://www.google.com/
1 http://www.yahoo.com
2 None
我想用pandas NaN替换python None。我试过了:
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'
我应该怎么做?
答案 0 :(得分:71)
您可以使用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)
答案 1 :(得分:9)
以下行将@SuppressWarnings("unchecked")
E elementData(int index) {
return (E) elementData[index];
}
替换为None
:
NaN
答案 2 :(得分:6)
这是另一种选择:
df.replace(to_replace=[None], value=np.nan, inplace=True)
答案 3 :(得分:0)
如果使用df.replace([None],np.nan,inplace = True),则会将所有缺少数据的日期时间对象更改为对象dtype。因此,除非您将其更改回日期时间,否则现在您可能会遇到断掉的查询,这可能会增加数据量,这取决于数据的大小。
如果要使用此方法,可以先在df中标识对象dtype字段,然后替换None:
obj_columns = list(df.select_dtypes(include=['object']).columns.values)
df[obj_columns] = df[obj_columns].replace([None], np.nan)
答案 4 :(得分:0)
DataFrame['Col_name'].replace("None", np.nan, inplace=True)
答案 5 :(得分:0)
这是一个老问题,但这里是多列的解决方案:
values = {'col_A': 0, 'col_B': 0, 'col_C': 0, 'col_D': 0}
df.fillna(value=values, inplace=True)
有关更多选项,请查看文档:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.fillna.html