我有一个“年龄”列,但有时会显示NaN值。 我知道我可以使用“fillna”来达到这个目的,但我已经尝试定义自己的函数(并学习这样做)并使用applymap to dataframe
到目前为止没有成功。Age
69
49
NaN
54
NaN
我试过
def get_rid_of_nulls(value):
if value == np.nan:
return 'Is Null value'
else:
return value
这不起作用
if value == None
if value isnull
if value == np.na
if value ==''
if value == NaN
if value == 'NaN'
这些比较似乎都不起作用。我当然错了,但是我被困住了,而且我很顽固地使用fillna
感谢
答案 0 :(得分:5)
由于您的标题中有“替换”,并且您提到fillna
但未提及replace()
方法,您也可以获得相同的结果:
df.Age.replace(np.NaN, 'Is Null value', inplace=True)
# Or, depending on your needs:
df['Age'] = df.Age.replace(np.NaN, 'Is Null value')
# Or without `replace` :
df['Age'] = df.Age.apply(lambda x: x if not pd.isnull(x) else 'Is Null value')
答案 1 :(得分:2)
您可以使用pd.isnull()
:
In [4]:
def get_rid_of_nulls(value):
if pd.isnull(value):
return 'Is Null value'
else:
return value
df['Age'].apply(get_rid_of_nulls)
Out[4]:
0 69
1 49
2 Is Null value
3 54
4 Is Null value
Name: Age, dtype: object
同样,您可以使用NaN
不相等的属性:
In [5]:
def get_rid_of_nulls(value):
if value != value:
return 'Is Null value'
else:
return value
df['Age'].apply(get_rid_of_nulls)
Out[5]:
0 69
1 49
2 Is Null value
3 54
4 Is Null value
Name: Age, dtype: object