检查字符串列的最后一个字符是否是Pandas中的数字

时间:2018-05-05 16:29:26

标签: python string pandas dataframe

我有这个数据框:

   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'

有人可以提供帮助吗?

2 个答案:

答案 0 :(得分:4)

你很亲密。诀窍是通过pd.Series.str.isnumeric使用.str访问者。

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

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     

答案 1 :(得分:2)

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

import numpy as np

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

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