熊猫用字符串条件替换数据框中的值

时间:2020-10-01 14:35:20

标签: python pandas string replace

我需要一些帮助:

我有两列: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

我只是无法解决-有人可以帮忙吗?谢谢!

2 个答案:

答案 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