我试图在我的数据集中创建一个列,以便任何空值都可以设置为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
或者,一堆空值。我哪里出错了,什么是更好的方法来处理所有这些?
答案 0 :(得分:4)
除非我非常误以为,True
不是'True'
的简单问题。
AgeExist = Age1.map({False:0, True: 1})
应该适合你。
答案 1 :(得分:2)
您可以使用.astype
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)