Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 熊猫数据框用NaN替换空白_String_Pandas_Na - Fatal编程技术网

String 熊猫数据框用NaN替换空白

String 熊猫数据框用NaN替换空白,string,pandas,na,String,Pandas,Na,我有一个带有空单元格的数据框,希望用NaN替换这些空单元格。 先前在本论坛上提出的解决方案有效,但仅当单元包含空间时: df.replace(r'\s+',np.nan,regex=True) 当单元格为空时,此代码不起作用。有没有人建议用panda代码替换空单元格。我认为最简单的方法是替换两次: In [117]: df = pd.DataFrame({'a':['',' ','asasd']}) df Out[117]: a 0 1 2 asas

我有一个带有空单元格的数据框,希望用NaN替换这些空单元格。 先前在本论坛上提出的解决方案有效,但仅当单元包含空间时:

df.replace(r'\s+',np.nan,regex=True)


当单元格为空时,此代码不起作用。有没有人建议用panda代码替换空单元格。

我认为最简单的方法是替换两次:

In [117]:
df = pd.DataFrame({'a':['',' ','asasd']})
df

Out[117]:
       a
0       
1       
2  asasd

In [118]:
df.replace(r'\s+',np.nan,regex=True).replace('',np.nan)

Out[118]:
       a
0    NaN
1    NaN
2  asasd
这个怎么样

df.replace(r'\s+|^$', np.nan, regex=True)

其他两个答案都不考虑字符串中的所有字符。这样更好:

df.replace(r'\s+(++\)|#',np.nan,regex=True)。replace('',np.nan))


更多文档:

正如您已经看到的,如果您执行明显的操作并将()替换为“无”,则会抛出错误:

df.replace('', None)
TypeError: cannot replace [''] with method pad on a DataFrame
解决方案似乎是简单地用numpy的NaN替换空字符串

import numpy as np
df.replace('', np.NaN)
虽然我不能100%确定在所有边缘情况下pd.NaN的处理方式与np.NaN完全相同,但我没有遇到任何问题。fillna()工作,将空值持久化到数据库中以代替np.NaN工作,将NaN持久化到csv工作


(熊猫版本18.1)

尝试
df.replace(r'\s*,np.nan,regex=True)
实际上我的建议太激进了,这将所有str设置为
nan
,给我一点时间,我认为最简单的事情是分两次完成,可以是一行:
df.replace(r'\s+,np.nan,regex=True)。replace(“”,np.nan)
请注意,此解决方案并不总是有效。在我的例子中,它不适用于字符串
2015-09-02 06:13:40
,也就是说,它导致将该值转换为NaN(而这本不应该发生)。检查字符串中是否有更多字符:
。replace(r'\s++(++\)|#',np.nan,regex=True)。replace('',np.nan))
(++\)|
做什么?很好用,顺便问一下,我很好奇,你为什么要用
|#
?这将我的df:
#000000
中的所有十六进制颜色替换为NaN。这不像是在df中有评论。。。更可能的情况是,图中有颜色。。