【问题标题】:Regex on numbers - python [closed]数字正则表达式 - python [关闭]
【发布时间】:2020-04-22 00:49:39
【问题描述】:

我是正则表达式的新手,我需要一些帮助。我有一个数据框,其中我得到了带有数量的列,在大多数情况下,它类似于 869,850.0 并且我只需要数字以 950.00 或 999.00 结尾的行我不需要像 999.1 这样的东西。我没有想出如何在熊猫中归档这些值。

所以我正在尝试使用正则表达式匹配,因为我是新手,所以我只知道如何获取 number unit 。类似 [^.]*.但是我不知道如何申请以及如何继续,有人可以帮助我吗?

【问题讨论】:

  • 你能给我们看一些代码吗?
  • 试试这个:^[0-9]+(\.0+)?$ 我认为不带小数的数字也是可以接受的。

标签: python regex pandas


【解决方案1】:

你也可以试试这个:

     df = pd.DataFrame({'a': ['850890.0', '850999.0', '850990.0', '850995.0']})
     print(df)
               a
     0  850890.0
     1  850999.0
     2  850990.0
     3  850950.0

     #create a regex to find all numbers
     numbers = ['999.0', '950.0']

     #now put these values in a pattern
     pattern =  r'(?:{})'.format('|'.join(numbers))
     pattern
     '(?:999.0|950.0)'

     dfnew = df['a'].str.findall(pattern).apply(''.join,1)
     print(dfnew)
     0         
     1    999.0     
     2    
     3    950.0
     Name: a, dtype: object

【讨论】:

    【解决方案2】:

    使用modulo (%) 代替正则表达式。它会给你除法后的余数,如果给出 10 的幂,它可以用来得到一个数字的“尾巴”。这个尾巴可以根据你的条件来检查。

    在您的情况下,除以 1000 的余数为您提供您正在寻找的余数,请参见以下示例:

    import pandas as pd
    
    s = pd.Series([
        1950., 
        1012950., 
        2999., 
        1950.1, 
    ])
    
    s % 1000
    
    # Returns 
    # 950.
    # 950.
    # 999.
    # 950.1
    
    (s % 1000).isin([999., 950.])  # allowed values
    
    # Returns
    # True
    # True
    # True
    # False
    
    s[(s % 1000).isin([999., 950.])]
    
    # Returns
    # 1950.
    # 1012950.
    # 2999.
    
    # Not: 1950.1, because 950.1 is not in [999., 950.]
    
    

    【讨论】:

      【解决方案3】:

      如果您想使用正则表达式,请尝试以下操作:

      [0-9]{3}\.0{2}
      

      它将首先匹配 3 个数字,然后匹配点 (.),然后匹配 2 0。我希望这个正则表达式很容易理解和调整。

      您可以在这里尝试正则表达式:

      https://regex101.com/

      【讨论】:

        猜你喜欢
        • 2015-10-22
        • 2017-11-13
        • 1970-01-01
        • 1970-01-01
        • 2013-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-08
        相关资源
        最近更新 更多