我需要一些帮助:
我有两列:id和class:
df:
id class
AB001 NaN
AB002 NaN
CDE001 NaN
CDE002 NaN
我想要的是,如果id以AB开头,则类为AB,
但如果
id以CDE开头,则类为CDE
所以我最终会得到:
id class
AB001 AB
AB002 AB
CDE001 CDE
CDE002 CDE
我只是无法解决-有人可以帮忙吗?谢谢!
答案 0 :(得分:5)
您似乎想剪切所有后缀数字,所以:
df['class'] = df['id'].str.extract('^(\D+)')[0]
输出:
id class
0 AB001 AB
1 AB002 AB
2 CDE001 CDE
3 CDE002 CDE
更新:根据您的评论,您可以使用rstrip
:
df['class'] = df['id'].str.rstrip('0123456789')
或仍然使用extract
:
df['class'] = df['id'].str.extract('^(.*\D)\d+$')[0]
答案 1 :(得分:1)
使用正则表达式提取的另一种方法
例如:
df = pd.DataFrame({"id":['AB001', 'AB002', 'CDE001', 'CDE002']})
df['Class'] = df['id'].str.extract(r"^([A-Z]+)")
print(df)
输出:
id Class
0 AB001 AB
1 AB002 AB
2 CDE001 CDE
3 CDE002 CDE