【问题标题】:Use regex to extract substring from pandas column使用正则表达式从熊猫列中提取子字符串
【发布时间】:2019-06-16 21:52:39
【问题描述】:

我的列的值如下:

Col1

1/1/100 'BA1
1/1/102Packe
1/1/102 'to_

并且只需要提取 1/1/100(从第一行)等等(1/1/102...)

我正在使用:

df['col1'] = df['col1'].str.extract('(\d+)/(\d+)/(\d+)', expand=True)

但我只得到 1 个。

不知道为什么这不起作用,是正则表达式有问题还是我需要某种映射?

【问题讨论】:

    标签: python regex pandas


    【解决方案1】:

    我建议这个正则表达式:

    df['col1'].str.extract('\b(\d/?)+', expand=True)
    

    【讨论】:

      【解决方案2】:

      你也可以试试这个,

      df['Col1']=df['Col1'].str.replace('\d+|/','')
      

      注意:正则表达式比.str.replace 更强大。

      【讨论】:

        【解决方案3】:

        您只需要使用一个捕获组:

        df['col1'] = df['col1'].str.extract('(\d+/\d+/\d+)', expand=True)
                                             ^           ^
        

        str.extract 方法返回使用第一个捕获组捕获的值,您的正则表达式将第一个 1 捕获到该组中。

        测试:

        >>> import pandas as pd
        >>> df = pd.DataFrame({"col1":["1/1/100 'BA1", "1/1/102Packe", "1/1/102 'to_"]})
        >>> df['col1'].str.extract('(\d+/\d+/\d+)', expand=True)
                 0
        0  1/1/100
        1  1/1/102
        2  1/1/102
        

        【讨论】:

          猜你喜欢
          • 2018-08-28
          • 2017-12-08
          • 2017-07-18
          • 2022-01-10
          • 2017-07-18
          • 2017-01-09
          • 2010-10-14
          • 2018-03-31
          相关资源
          最近更新 更多