【问题标题】:Check if string column last characters are numbers in Pandas检查字符串列最后一个字符是否是 Pandas 中的数字
【发布时间】:2018-10-15 22:16:48
【问题描述】:

我有这个数据框:

   Code               Mark
0  Abd 43212312312   
1  Charles de Gaulle
2  Carlitos 4132411  
3  Antonio

如果 Code 列中字符串的最后 5 个字符是数字,我希望 'Mark' 是 'A',所以它看起来像这样:

   Code               Mark
0  Abd 43212312312    A
1  Charles de Gaulle
2  Carlitos 4132411   A
3  Antonio

我正在尝试使用 isnumeric,但我不断收到 AttributeError: 'Series' object has no attribute 'isnumeric'

有人可以帮忙吗?

【问题讨论】:

    标签: python string pandas dataframe


    【解决方案1】:

    使用pd.Series.str.match,可以使用

    import numpy as np
    
    df['Mark'] = np.where(df.Code.str.match(r'.*?\d{5}$'), 'A', '')
    

    请注意,'.*?' 是非贪婪正则表达式匹配,'\d{5}' 检查 5 位数字,'$' 匹配字符串结尾。

    【讨论】:

      【解决方案2】:

      你很接近。诀窍是通过pd.Series.str.isnumeric 使用.str 访问器。

      然后通过pd.Series.map映射到'A'或空字符串:

      df['Mark'] = df['Code'].str[-5:]\
                             .str.isnumeric()\
                             .map({True: 'A', False: ''})
      
      print(df)
      
                    Code Mark
      0   Abd43212312312    A
      1  CharlesdeGaulle     
      2  Carlitos4132411    A
      3          Antonio     
      

      【讨论】:

        猜你喜欢
        • 2013-01-06
        • 1970-01-01
        • 2020-07-15
        • 1970-01-01
        • 1970-01-01
        • 2021-10-27
        • 2023-03-28
        • 1970-01-01
        • 2019-05-11
        相关资源
        最近更新 更多