如何将Pandas DataFrame列值替换为对应字符串末尾的整数
Pandas提取字符串字段末尾数字的实现方案
方案1:固定分隔符场景(适配当前示例数据)
示例中ID列统一为前缀_目标数字的下划线分隔格式,直接用字符串分割取最后一段即可,逻辑简单执行效率高,且不会丢失前导零:
import pandas as pd # 初始化示例DataFrame df = pd.DataFrame({ 'Name': ['Peter', 'John'], 'ID': ['School_09', 'School_23'] }) # 按下划线分割字符串,取索引为-1的最后一段作为新的ID值 df['ID'] = df['ID'].str.split('_').str[-1]
处理后输出结果和预期完全一致:
| Name | ID |
|---|---|
| Peter | 09 |
| John | 23 |
方案2:通用场景(适配ID列格式不统一的情况)
如果ID列前缀格式不固定,没有统一分隔符,仅需要提取所有行字符串末尾的连续数字,可以用正则匹配提取,兼容性更强:
# 正则(\d+)$表示匹配字符串结尾位置的1个及以上连续数字 df['ID'] = df['ID'].str.extract(r'(\d+)$')
注意:如果业务不需要保留前导零,可以在提取后加.astype(int)把ID列转为整数类型;如果需要保留09这类带前导零的格式,不要做类型转换,保持字符串类型即可。
内容的提问来源于stack exchange,提问作者Malik Umar
相关产品推荐
相关产品推荐

