【问题标题】:Removing Partial Strings from Dataframe Column从数据框列中删除部分字符串
【发布时间】:2019-07-16 16:59:16
【问题描述】:

类似问题:Replacing part of string in python pandas dataframe

但它不会工作!?

帕纳斯 23.4

给定以下 df 列:

    Expression
    XYZ&(ABC|DEF)
   (HIJ&FTL&JKK)&(ABC|DEF)
   (FML|AXY|AND)&(ABC|DEF)

我想去除每列中可能存在的子字符串。

flag = '(ABC|DEF)'
andFlag = '&' + flag #the reasoning for doing this is that 'flag' may change


#Below are all different ways I have tried to achieve this, none have worked. 
df['Expression'] = df['Expression'].replace(andFlag, '', regex=True)
df['Expression'] = df['Expression'].apply(lambda x: re.sub(andFlag, '', x))
df['Expression'] = df['Expression'].replace(to_replace=andFlag, value= '', regex=True)
df['Expression'] = df['Expression'].str.replace(andFlag, '')
df['Expression'] = df['Expression'].str.replace(andFlag, '', regex=True)

无论有没有regex=True,我都尝试过所有这些功能,但均无济于事。

预期输出:

    Expression
    XYZ
   (HIJ&FTL&JKK)
   (FML|AXY|AND)

我想弄清楚这一点有点疯狂,它看起来如此简单明了。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    括号和竖线是正则表达式中的特殊字符,所以如果要匹配这些字符,可以在前面添加反斜杠'\',例如:

    flag = '\(ABC\|DEF\)' #see this is changed
    andFlag = '&' + flag
    print (df['Expression'].replace(andFlag, '', regex=True))
    
    0              XYZ
    1    (HIJ&FTL&JKK)
    2    (FML|AXY|AND)
    Name: Expression, dtype: object
    

    【讨论】:

    • 不管怎样,当他们尝试df['Expression'] = df['Expression'].str.replace(andFlag, '')时它不应该起作用吗?
    • @ZacharyOldham 不,但你是对的,通过将参数正则表达式设置为 False(默认情况下为 True),你会得到正确的答案 df['Expression'].str.replace(andFlag, '', regex=False)
    • 啊,regex=True 是默认的吗?
    • @ZacharyOldham 显然 :)
    【解决方案2】:

    使用str.replace 更重要的是,设置regex=False 进行文字匹配:

    df['Expression'] = df['Expression'].str.replace(andFlag, '', regex=False)
    
          Expression
    0            XYZ
    1  (HIJ&FTL&JKK)
    2  (FML|AXY|AND)
    

    【讨论】:

      猜你喜欢
      • 2018-11-16
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      • 2021-02-13
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      相关资源
      最近更新 更多