Pandas如何从ID列提取CODE字符串及后续浮点数值生成新列
Pandas提取ID列信息生成新列解决方案
实现思路
- 直接使用Pandas字符串方法的
str.extract()结合正则匹配完成需求,该方法会自动将未匹配到的行赋值为NaN,刚好满足仅处理含CODE行的要求 - 正则规则匹配
CODE字符串,跳过两者之间可能存在的空格,提取后续连续数字,最后拼接成要求的格式
完整实现代码
import pandas as pd # 读取你的数据,示例用读csv,可根据自己的数据源调整读取方式 df = pd.read_csv("your_data.csv") # 提取匹配内容并生成新列 extract_groups = df["ID"].str.extract(r"(CODE)\s*(\d+)") df["new_col"] = (extract_groups[0] + " " + extract_groups[1]).str.strip()
正则说明
r"(CODE)\s*(\d+)"各部分含义:
(CODE):第一个分组,匹配固定字符串CODE\s*:匹配0个或多个空白字符,兼容CODE和数字之间有没有空格的情况(\d+):第二个分组,匹配连续的数字,遇到非数字字符自动停止
效果验证
示例输入
ID value1 value2 value3 Date ICO54 XT 317 10 10 1000 2010-04-07 IP006 CODE 504 20 11 3000 2000-12-07 CODE99 2B06 NHH 20 130 8000 2001-10-18 CODE 133L 20 10 18000 2001-10-21 CODE 196 ES MHE CXX NH053 8 100 12000 2009-08-12 CODE131ESAGEMSHRGEM014 8 100 12000 2009-08-12
输出结果
ID value1 value2 value3 Date new_col ICO54 XT 317 10 10 1000 2010-04-07 NaN IP006 CODE 504 20 11 3000 2000-12-07 CODE 504 CODE99 2B06 NHH 20 130 8000 2001-10-18 CODE 99 CODE 133L 20 10 18000 2001-10-21 CODE 133 CODE 196 ES MHE CXX NH053 8 100 12000 2009-08-12 CODE 196 CODE131ESAGEMSHRGEM014 8 100 12000 2009-08-12 CODE 131
内容的提问来源于stack exchange,提问作者nilsinelabore
相关产品推荐
相关产品推荐

