Python:如果为空则为0,如果不为则为1

时间:2016-04-01 14:38:12

标签: python pandas null

我试图在我的数据集中创建一个列,以便任何空值都可以设置为0,非空值设置为1.对于初学者,我的数据列称为'粗略地说,9Age'看起来像这样:

NaN
6
5
NaN
2
NaN
3
5
4

将空值设置为0可以像这样简单:

Age0 = df['9Age'].fillna(0)

但是,这是我尝试的其余部分:确定值是否为空是在下面完成的:

Age1 = df['9Age'].notnull()

这改变了' 9Age'到:

False
True
True
False
True
False
True
True
True

也就是说,如果观察值不为null,则返回True,否则返回False。按照这个逻辑,我采取的下一步是写下这个:

AgeExist = Age1.map({'False':0, 'True': 1})

然而,令我沮丧的是,AgeExist收益率

NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN

或者,一堆空值。我哪里出错了,什么是更好的方法来处理所有这些?

2 个答案:

答案 0 :(得分:4)

除非我非常误以为,True不是'True'的简单问题。

AgeExist = Age1.map({False:0, True: 1})

应该适合你。

答案 1 :(得分:2)

您可以使用.astype

将一系列True / False值转换为整数表示形式
import pandas as pd
import numpy as np

df = pd.DataFrame()

df['col'] = [np.NaN, 6, 5, np.NaN]
col = df['col'].notnull()
col.astype(int)