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

Pandas如何拆分列提取//之间的字符串并生成对应新列

解答

完全可以通过split拆分操作实现该需求,无需依赖复杂正则,按固定分隔符做两层拆分即可完成提取,具体实现逻辑如下:

  • 第一层拆分:针对PRECIOS列的字符串,先按逗号,拆分得到分段列表,跳过首个对应1//的分段,截取后续5个有效分段
  • 第二层拆分:对每个有效分段,按/做二次拆分,直接取两个斜杠中间的数值内容
  • 列赋值:将提取到的5个数值按顺序写入PRECIO1、PRECIO 2、PRECIO 3、PRECIO 4、PRECIO 5五个新列即可

可直接运行的实现代码如下:

import pandas as pd

# 测试数据构造
df = pd.DataFrame({
    'PRECIOS': [
        "1//,2/3699/,3/3699/,4/3699/,6/3699/,7/4499/",
        "1//,2/3650/,3/3650/,4/3650/,6/3650/,7/9087/"
    ]
})

# 核心提取逻辑
def get_price_list(content):
    # 按逗号拆分后跳过首段,取后续5个价格分段
    part_list = content.split(',')[1:6]
    # 每个分段按/拆分,取中间位置的数值
    return [part.split('/')[1] for part in part_list]

# 批量赋值到新列
df[['PRECIO1', 'PRECIO 2', 'PRECIO 3', 'PRECIO 4', 'PRECIO 5']] = df['PRECIOS'].apply(
    lambda x: pd.Series(get_price_list(x))
)

执行后得到的结果完全匹配需求:

PRECIOSPRECIO1PRECIO 2PRECIO 3PRECIO 4PRECIO 5
1//,2/3699/,3/3699/,4/3699/,6/3699/,7/4499/36993699369936994499
1//,2/3650/,3/3650/,4/3650/,6/3650/,7/9087/36503650365036509087

提示:如果后续需要对价格列做数值统计、计算,提取时可以给数值套上int()做类型转换,避免字符串类型无法参与算术运算。

内容的提问来源于stack exchange,提问作者Maximiliano Vazquez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 02:48:33