如何修改DataFrame id列含nov:k_的字符串值并保留末尾k_xx部分
解决方案
你可以配合正则捕获组使用str.replace()实现需求,仅需一行代码即可完成替换,且不会修改不包含nov:k_的行。
完整示例代码
import pandas as pd # 构造你的示例DataFrame df = pd.DataFrame({ 'id': ['4_french:k_15', '87_nov:k_82', '11_nov:k_10', '1_italian:k_11'], 'value': [10, 82, 10, 9] }) # 核心替换逻辑 df['id'] = df['id'].str.replace(r'.*nov:(k_\d+)', r'\1', regex=True) print(df)
输出结果
id value 0 4_french:k_15 10 1 k_82 82 2 k_10 10 3 1_italian:k_11 9
逻辑说明
正则表达式r'.*nov:(k_\d+)'的含义:
.*匹配nov:之前的所有任意字符(k_\d+)是捕获组,匹配k_加后续的数字段- 替换值
r'\1'表示直接引用第一个捕获组的内容,也就是你需要保留的k_数字部分
如果你的场景中k_后面可能出现数字以外的字符,可以把\d+替换为\w+适配字母、数字、下划线的组合。
内容的提问来源于stack exchange,提问作者french_fries
相关产品推荐
相关产品推荐

