所以我已经搜索了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中的字符串变量。
答案 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