在Pandas中用NaN替换空字符串

doc*_*rer 11 python replace pandas

我有一个pandas数据帧(通过导入csv文件创建).我想用NaN替换空白值.一些这些空白值的是空的,一些包含一个(变量数)的空间'',' ',' '等.

使用这个帖子的建议我有

df.replace(r'\s+', np.nan, regex=True, inplace = True)
Run Code Online (Sandbox Code Playgroud)

它确实替换了只包含空格的所有字符串,但也替换了其中包含空格的每个字符串,这不是我想要的.

我怎么只替换字符串只是空间和空字符串?

Bou*_*oud 10

指示它必须以空白开头并以^和$结束空白:

df.replace(r'^\s*$', np.nan, regex=True, inplace = True)
Run Code Online (Sandbox Code Playgroud)


Raj*_*ddy 5

如果您正在读取csv文件并希望nan 在读取文件本身将所有空字符串转换为则可以使用该选项

skipinitialspace=True
Run Code Online (Sandbox Code Playgroud)

示例代码

pd.read_csv('Sample.csv', skipinitialspace=True)
Run Code Online (Sandbox Code Playgroud)

这将删除出现在分隔符之后的任何空格,从而使所有空字符串成为 nan

从文档http://pandas.pydata.org/pandas-docs/stable/io.html

在此处输入图片说明

注意:此选项甚至会从有效数据中删除前面的空格,如果出于任何原因您想保留前面的空格,则此选项不是一个好的选择。