【问题标题】:Removing multiple characters and joining in pandas columns删除多个字符并加入熊猫列
【发布时间】:2018-10-15 15:03:57
【问题描述】:

我正在尝试格式化此字符串,但不包括以下字符:( )

My_name (1)
Your_name (2)

期望的输出:

My_name_ID_1
Your_name_ID_2

这是我的数据框的一列。我尝试一次只替换一个字符,我也想在之后加入。

我可以加入并替换这两个字符吗?

【问题讨论】:

    标签: python string pandas dataframe join


    【解决方案1】:

    你也可以使用:

    s.str.replace(r"\(.*\)","").str.strip()+"_ID_"+s.str.replace(r'[^(]*\(|\)[^)]*', '')
    

    但是,@user3483203 的答案更好。 :)

    【讨论】:

      【解决方案2】:

      您可以使用带有str.replace 的正则表达式:

      s.str.replace(r'(\w+)\s+\(([^\)])\)', r'\1_ID_\2')
      

      0      My_name_ID_1
      1    Your_name_ID_2
      Name: 0, dtype: object
      

      另一种选择是:

      s.str.replace(r'\s+\(([^\)])\)', r'_ID_\1')
      

      如果你不想那么明确。


      正则表达式解释

      (                          # matching group 1
        \w+                      # matches any word character
      )                          
      \s+                        # matches one or more spaces
      \(                         # matches the character (
      (                          # matching group 2
        [^\)]                    # matches any character that IS NOT )
      ) 
      \)                         # matches the character )
      

      【讨论】:

      • 太棒了!我不得不停下来理解这个表达,因为它不是那么容易的!非常感谢!
      • 实际上,我注意到它适用于我的大多数 IDS,但其中一些没有加入它,如下所示。例如:NAMED_NO_DI_BACK (26)
      猜你喜欢
      • 2017-10-01
      • 2023-01-11
      • 2019-03-14
      • 2014-12-08
      • 1970-01-01
      • 1970-01-01
      • 2019-06-22
      • 2022-12-07
      • 1970-01-01
      相关资源
      最近更新 更多