用对象/分类变量中的NaN替换空值

时间:2018-06-15 13:20:31

标签: python dataframe nan

所以我已经搜索了SO,并找到了一堆关于如何用NaN替换空值的有用线程。但是,我无法让他们中的任何一个在我的DataFrame上工作。

我已经使用过:

df.replace('', np.NaN)
df3 = df.applymap(lambda x: np.nan if x == '' else x)

甚至:

df.iloc[:,86:350] = df.iloc[:,86:350].apply(lambda x: x.str.strip()).replace('', np.nan)

并且代码运行良好且没有错误但是当我查看我的数据帧时,我仍然有b''值而不是NaN。关于我缺少的任何想法?

我很抱歉没有给出重现此代码的代码,因为我不知道该怎么做,因为我怀疑它是从我从SPSS导入的数据帧特有的,这些值是如果有帮助,SPSS中的字符串变量。

1 个答案:

答案 0 :(得分:0)

你第二次尝试就接近了:

df = df.applymap(lambda x: np.NaN if not x else x)

要表明条件中''b''评估为True

l = ['', b'']

for x in l:
    if x:
       print ('Not empty')
    else:
       print ('Empty')

>>> Empty
>>> Empty

样品:

from pandas import DataFrame
from numpy import NaN

df = DataFrame([[1,2,''], ['',b'',3], [4, 5, b'']])
print (df)

# Output
    0    1    2
0   1    2    
1      b''    3
2   4    5  b''

df2 = df.applymap(lambda x: NaN if not x else x)
print (df2)

# Output
    0    1    2
0   1    2  NaN  
1 NaN  NaN    3
2   4    5  NaN