You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何拆分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方法拆分列:

  1. 核心思路:每行文本的结构为「描述文本 + 数值 + 单位」,用正则表达式分别匹配这三部分内容。
  2. 代码实现:
    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 14:55:20