使用applymap

时间:2016-01-18 17:56:14

标签: python pandas

我有一个“年龄”列,但有时会显示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

感谢

2 个答案:

答案 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