如何拆分DataFrame字符串列,提取描述、数值与单位字段
拆分DataFrame的description列提取数值与单位
问题场景
现有一个包含description列的DataFrame,数据如下:
description link Miami portforward 155 gb Link Berlin main 10 mbps link Mexico sub-rout 1 mb
需要将其拆分为三列:保留去除数值和单位后的描述文本、提取数值、提取单位,目标输出格式:
description value unit link Miami portforward 155 gb Link Berlin main 10 mbps link Mexico sub-rout 1 mb
此前尝试[x for x in column if x isdigit()]的方式完全无效,以下是可行解决方案。
解决方案
利用正则表达式匹配文本结构,结合pandas的str.extract方法拆分列:
- 核心思路:每行文本的结构为「描述文本 + 数值 + 单位」,用正则表达式分别匹配这三部分内容。
- 代码实现:
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ 'description': [ 'link Miami portforward 155 gb', 'Link Berlin main 10 mbps', 'link Mexico sub-rout 1 mb' ] }) # 正则提取并拆分列 df[['description', 'value', 'unit']] = df['description'].str.extract( r'^(.*?)\s+(\d+)\s+(\w+)$', expand=True ) # 打印对齐后的结果 print(df.to_string(index=False))
正则表达式说明
^(.*?):非贪婪匹配开头到数值前的所有文本,确保只保留描述部分;\s+(\d+):匹配数值(一个或多个连续数字);\s+(\w+)$:匹配结尾的单位(由字母组成的字符串)。
原方法无效原因
[x for x in column if x isdigit()]是逐个遍历字符串字符,只能提取单个数字字符,无法识别连续的数值整体,也不能区分数值和单位,因此无法满足需求。
内容的提问来源于stack exchange,提问作者pouchewar
相关产品推荐
相关产品推荐

