如何在Pandas中删除kd子串及其前置相邻数字生成新列
实现代码
你需要的功能可以通过如下代码实现:
df['vals'] = df['col1'].str.replace(r'\d+kd', '', regex=True)
效果验证
用你给出的示例数据测试,输出完全符合预期:
| col1 | vals |
|---|---|
| cat 113kd29 | cat 29 |
| do56goat24kdasd | do56goatasd |
| pig145kd | pig |
原代码失效原因
你写的正则逻辑本身是对的,失效是因为pandas 2.0及以上版本中,str.replace的regex参数默认值为False,会把传入的规则当成普通字符串匹配,而非正则表达式。显式加上regex=True参数就能正常运行。另外你写的正则里的捕获组()没有实际作用,可以直接去掉。
内容的提问来源于stack exchange,提问作者Zanam
相关产品推荐
相关产品推荐

