【问题标题】:Removing rows with digits and strings in pandas dataframe删除熊猫数据框中带有数字和字符串的行
【发布时间】:2019-03-15 18:30:59
【问题描述】:

我正在尝试删除仅包含数字或仅包含字符的行。例如,下面是示例 pandas 数据框列:

col1:

business
served business
02446681
C96305407PLA
P0116711

在我的结果中,我需要以下值,因为第一行和第二行只包含字符,第三行只是数字。

col1:

C96305407PLA
P0116711

任何建议将不胜感激!

【问题讨论】:

    标签: string pandas dataframe


    【解决方案1】:

    使用两个str.contains

    df[df.business.str.contains('\d+')&df.business.str.contains('[A-Za-z]')]
    Out[48]: 
           business
    2  C96305407PLA
    3      P0116711
    

    【讨论】:

      【解决方案2】:

      将pandas.Series.str.contains 与正则表达式一起使用

      更简单的正则表达式,但允许使用'123 456' 的行,因为'3 ' 和' 4' 都满足该模式。

      df[df.col1.str.contains('\d\D|\D\d')]
      
                 col1
      3  C96305407PLA
      4      P0116711
      

      这通过显式强制模式仅在找到数字/alpha 或 alpha/digit 时才匹配,从而解决了上述正则表达式的缺点。

      df[df.col1.str.contains('(?i)\d[a-z]|[a-z]\d')]
      
                 col1
      3  C96305407PLA
      4      P0116711
      

      【讨论】:

        【解决方案3】:

        str.extract 并删除不必要的行。

        df['col1'].str.extract('([A-Za-z]+\d+)', expand = False).dropna()
        
        3    C96305407
        4     P0116711
        

        【讨论】:

          猜你喜欢
          • 2020-11-04
          • 1970-01-01
          • 2019-01-28
          • 1970-01-01
          • 1970-01-01
          • 2019-03-06
          • 2017-06-02
          • 2018-03-23
          • 2021-08-12
          相关资源
          最近更新 更多