【问题标题】:replacing empty strings with NaN in Pandas在 Pandas 中用 NaN 替换空字符串
【发布时间】:2017-04-04 08:38:18
【问题描述】:

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

使用来自this thread的建议我有

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

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

如何只用 个空格和空字符串替换字符串?

【问题讨论】:

  • 我相信这是一个重复的问题:stackoverflow.com/questions/13445241/…
  • @NickK9 我在我的问题中链接到该线程。问题和接受的答案替换包含 any 空格的单元格。我的问题是关于替换包含 only 空格的单元格。所以,我不同意它是重复的。

标签: python pandas replace


【解决方案1】:

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

skipinitialspace=True

示例代码

pd.read_csv('Sample.csv', skipinitialspace=True)

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

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

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

【讨论】:

    【解决方案2】:

    用 ^ 和 $ 表示它必须以空格开头并以空格结尾:

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

    【讨论】:

    • 这也会捕获嵌入在空格中的字符串,例如“thisstring”,但它适用于我的数据集。
    • @Boud 不应该真正替换为 r'^\s*$' 的模式。原始答案与空字符串 '' 不匹配。
    • @Boud 当我被困在无法用 replace() 替换几个空单元格时偶然发现了这个答案。这非常有效。谢谢
    猜你喜欢
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多