【发布时间】:2020-06-11 16:11:14
【问题描述】:
我想将我的 Pandas 数据框中与所需格式不匹配的所有值设置为 NaN。
不受欢迎的格式示例:
代码
df['Anfang L1'] = df['Anfang L1'].str.replace(r'(?!\D{3}.\d{2})', '')
正则表达式在没有否定前瞻的情况下工作。 正则表达式也适用于 str.match 函数中的负前瞻。
df[df['Anfang L1'].str.match('(?!\D{3}.\d{2})')]
谢谢你们帮助我。
PS:我也尝试了以下
df['Anfang L1'].replace(to_replace=r'(?!\D{3}.\d{2})', value='new', inplace=True)
【问题讨论】:
-
正确格式化您的代码
-
你需要什么?你说你的正则表达式运行良好。但是,必须对点进行转义以匹配文字点。请发布可重现的代码 sn-p 来重现问题,以及预期的结果。
-
以防万一,当您仍在研究可重现的示例时,请尝试
df['Anfang L1'].replace([r'^\d{2}\.\d{4}$'], np.nan, regex=True, inplace=True) -
@WiktorStribiżew 这有效,请将其发布为解决方案,以便我可以将此问题标记为已解决。感谢您的帮助。
-
我在an answer below 上发布了一个解释
标签: python regex pandas regex-lookarounds regex-negation