我有这个数据框:
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'
有人可以提供帮助吗?
答案 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位数,'$'
匹配字符串结尾。