如何使用正则表达式从pandas DataFrame的header列拆分提取ID
问题原因
你原先使用\d+作为分割规则,会将id中包含的数字作为分割位点,导致拆分结果碎片化,无法得到完整的id和header内容。
解决方法
方法1:按第一个空格拆分(无需复杂正则)
你的数据中id和后续header内容仅通过第一个空格分隔,且header内部的空格需要保留,只需要指定拆分次数为1即可:
import pandas as pd df=pd.DataFrame({"header":["SS50377_28860 All-trans-retinol 13,14-reductase"]}) # 拆分后直接覆盖/新增对应列 df[['id','header']] = df['header'].str.split(n=1, expand=True)
运行后即可得到你需要的df结构。
方法2:正则捕获实现拆分
如果需要通过正则严格匹配规则,可以用str.extract直接捕获两组内容:
df = df['header'].str.extract(r'(?P<id>\w+)\s+(?P<header>.*)')
正则说明:
(?P<id>\w+):捕获由字母、数字、下划线组成的id部分,自动命名列名为id\s+:匹配id和header之间的一个或多个空格(?P<header>.*):捕获空格后的所有内容作为新的header列,自动命名列名为header
内容的提问来源于stack exchange,提问作者zkrt
相关产品推荐
相关产品推荐

