【问题标题】:Replace by NaN if string contains digits or symbols如果字符串包含数字或符号,则替换为 NaN
【发布时间】:2022-08-08 23:21:34
【问题描述】:

我有一个数据框,我需要识别包含数字或符号的值以消除它们。只允许使用字母和空格。数据框的大小非常大,我正在尝试的不会产生任何结果:

df.NAME=df.NAME.replace(r\"(/^[a-zA-Z\\s]*$/)\",np.nan,regex=True)

有什么建议么? 谢谢

  • 请提供minimal reproducible example,即可重现的.通常这涉及包括您的数据框。 How to make good reproducible pandas examples。乍一看,您不需要正斜杠来表示您的正则表达式。解决此问题后,您的正则表达式将用np.nan 替换仅由字母或空格组成的任何内容。从您的描述中,这似乎不是您想要的

标签: python pandas regex replace


【解决方案1】:

如果您只需要保留仅包含字母和空格的项目,则需要

df['NAME']=df[df['NAME'].str.contains(r"^[a-zA-Z\s]*$", np.nan, regex=True)]

这会将所有这些项目保留在 NAME 列中,这些项目仅包含 ASCII 字母或/和空格。

要支持任何 Unicode 字母,您需要

df['NAME']=df[df['NAME'].str.contains(r"^(?:[^\W\d_]|\s)*$", np.nan, regex=True)]

其中(?:[^\W\d_]|\s) 匹配任何Unicode 字母(连同大多数变音符号)或空白字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    • 2020-07-26
    • 2021-11-22
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 2017-02-07
    相关资源
    最近更新 更多