我有一个数据框:
data = pd.DataFrame({'myCol': ['NaN','NA','xsysdf dfsf','ertrret ertret','\n','sdfdsfsdfsf','erw3242werw']
})
我想做的是:
根据以下条件创建列myCol1
,即如果myCol
包含'NA'或'NaN'值或'is Empty'(可能是因为\n
或类似\t
的原因),在myCol1
中,值将显示为No
,否则Yes
因此,我的新数据帧应该如下所示:
新数据帧:
myCol myCol1
NaN No
NA No
xsysdf dfsf Yes
ertrret ertret Yes
\n No
sdfdsfsdfsf Yes
erw3242werw Yes
我想做的事情如下:
data['myCol1'] = data['myCol'].apply(lambda x: 'No' if(str(x) == 'nan') else 'Yes')
data['myCol1'] = data['myCol'].apply(lambda x: 'No' if np.isnan else 'Yes')
data['myCol1'] = data['myCol'].apply(lambda x: 'No' if(np.all(pd.notnull(x))) else 'Yes')
但是上面的每一个代码都会将结果作为所有行发送给我='No'
data.groupby('myCol2').size()
myCol2
No 223567
dtype: int64
这将有助于:
这几乎没有问题,除了预期的字符串是
'NaN'
而不是'nan'
:这个函数检查函数
np.isnan
的真实性,而不是调用函数,因此它总是返回True
大小写。此外,np.isnan
不能与非数字类型一起使用:这里
x
是数据帧中单个单元格中的字符串,因此np.all
将迭代字符串中的字符,并检查每个字符的条件。由于所有字符串都没有空字符,因此始终返回True
大小写:试试这个:
输出:
无论您是否将
NA
值或'NA'
值编码为字符串,这都将起作用相关问题 更多 >
编程相关推荐