【问题标题】:Extract Numbers from a String Column that contains certain substrings [duplicate]从包含某些子字符串的字符串列中提取数字[重复]
【发布时间】:2023-01-10 16:16:10
【问题描述】:

我正在寻找从 Work_Experience 列中提取另一列中的数字

**Work_Experience**  
3 Month  
7 month  
11 Months  
8 months  
0

我正在寻找以下输出:

**Work_Experience**  ||   **Output**  
3 Month                   3  
7 month                   7  
11 Months                 11  
8 months                  8  
0                         0  

这是我试过的

Experian_P2['Output'] = Experian_P2['Work_Experience'].str.contains('|'.join(['month', 'Month','months','Months'])).str.extract("(\d{1,2})")

【问题讨论】:

    标签: python regex


    【解决方案1】:

    您可以使用

    df['Output'] = df['Work_Experience'].str.extract(r'(?i)(d+)s*month').fillna(0)
    

    图案细节:

    • (?i) - 不区分大小写的匹配
    • (d+) - 第 1 组:一位或多位数字
    • s* - 零个或多个空格
    • month - month 字符串。

    【讨论】:

      【解决方案2】:

      如果你知道第一部分永远是一个数字,你可以试试这个简单的 sn-p

      a = ['3 Month', '7 month', '11 Months', '8 months', '0']
      
      for x in a:
          parts = x.split(' ')
      
          print (x, int(parts[0]))
      

      【讨论】:

        【解决方案3】:

        假设这里是

        您的命令并没有真正意义,因为您正在通过管道传输一个命令来生成一个布尔系列,然后试图从中提取文本:

        Experian_P2['Work_Experience'].str.contains('|'.join(['month', 'Month','months','Months'])).str.extract("(d{1,2})"
        

        我想你想extract 在这个子集上:

        m = Experian_P2['Work_Experience'].str.contains('months?', case=False)
        
        Experian_P2.loc[m, 'Output'] = Experian_P2.loc[m, 'Work_Experience'].str.extract("(d{1,2})", expand=False)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-06-30
          • 2018-05-13
          • 2019-03-15
          • 1970-01-01
          • 2023-03-24
          • 1970-01-01
          • 2017-12-30
          相关资源
          最近更新 更多