如何在Pandas中拆分含章节编号的文本列生成两列?
拆分Pandas DataFrame中的章节编号与文本
可以通过正则表达式配合Pandas的字符串提取方法实现需求,具体步骤如下:
1. 构造示例数据(模拟你的DataFrame)
import pandas as pd # 模拟你的原始数据 data = { 'ColumnA': [ '4 Requirements', 'Requirement blah blah', 'Requirement blah blah blah', '4.1.1 Requirement Subsection', '4.1.1.1 Requirement subsection subsection', 'blah blah blah' ] } df = pd.DataFrame(data)
2. 正则提取拆分列
使用str.extract方法,通过正则匹配开头的章节编号(数字+可选的多级编号),同时分离出剩余文本:
# 正则表达式说明: # ^(\d+(?:\.\d+)*)? 匹配行首可选的章节编号(支持多级如4.1.1、4.1.1.1) # \s* 匹配编号与文本之间的任意空格 # (.*) 匹配剩余的全部文本 df[['ColA', 'ColB']] = df['ColumnA'].str.extract(r'^(\d+(?:\.\d+)*)?\s*(.*)', expand=True) # 将提取不到编号的空值(NaN)替换为空字符串,更贴合需求格式 df['ColA'] = df['ColA'].fillna('')
3. 结果展示
处理后的DataFrame如下:
ColumnA ColA ColB 0 4 Requirements 4 Requirements 1 Requirement blah blah Requirement blah blah 2 Requirement blah blah blah Requirement blah blah blah 3 4.1.1 Requirement Subsection 4.1.1 Requirement Subsection 4 4.1.1.1 Requirement subsection subsection 4.1.1.1 Requirement subsection subsection 5 blah blah blah blah blah blah
如果你的原始数据中有更复杂的编号格式(比如带字母),可以微调正则表达式的匹配规则,但当前正则已覆盖你给出的数字多级编号场景。
内容的提问来源于stack exchange,提问作者324
相关产品推荐
相关产品推荐

