用np.nan替换空字符串,但得到了NaN'

时间:2015-11-09 10:20:59

标签: numpy pandas

我尝试用np.nan

替换空字符串

但是我在单元格中得到None,那有什么不对?

由于

df.replace('', np.nan)

enter image description here

1 个答案:

答案 0 :(得分:1)

您的数据一定存在问题,而pandas则没有问题。见下面的例子:

>>> data = [['a', 'b', ''], ['', 'e', 'f']]
>>> df = pd.DataFrame(data)
>>> df
   0  1  2
0  a  b   
1     e  f

如果您尝试在上面的示例中将''替换为np.nan,则可以获得所需的结果:

>>> df.replace('', np.nan)
     0  1    2
0    a  b  NaN
1  NaN  e    f

但是,如果您的数据无法正确指定:

>>> data = [['a', 'b', None], [None, 'e', 'f']]
>>> df = pd.DataFrame(data)
>>> df
      0  1     2
0     a  b  None  
1  None  e     f

pandas无法提供帮助,因为您的数据不包含空字符串,但是未指定的值(None):

>>> df.replace('', np.nan) 
      0  1     2
0     a  b  None
1  None  e     f

但是,您仍有可能从表中删除None s。听起来很傻,以下内容应该仍然有效:

>>> df.replace(np.nan, np.nan)
     0  1    2
0    a  b  NaN
1  NaN  e    f

如果没有原始数据,很难说,但希望上述有所帮助。