首页 > 解决方案 > 如果字符串包含字符模式,如何用 None 替换值?

问题描述

我想用 None替换我的 pandas df 列中的每个字符串,如果它包含一个departments )

         departments   var1   var1.1
   1      transport     aa      uu
   2      industry)     bb      tt
   3      aviation)     cc      tt

数据集应该是什么样子

         departments   var1    var2
   1      transport     aa      uu
   2      None          bb      tt
   3      None          cc      tt

这里有一个类似的解决方案: 用另一个字符串替换正则表达式模式有效,但用 NONE 替换会替换所有值

由于我不使用 spark,如何将其转换为基础 python?

df.withColumn("departments", when(col("departments").rlike("\)"), None)
          .otherwise(col("departments"))
      )

标签: python-3.xpandasstringnonetype

解决方案


使用您显示的示例,请尝试以下操作。您可以使用str.contains函数来找出departments列中的任何值,)然后使用.loc我们在 m 变量设置 None 中获得的值。

m = df['departments'].str.contains('\)', na=False)
df.loc[m,'departments'] = None

推荐阅读