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

如何用双分隔符拆分数据集Value列?拆分后列表合并问题求助

提取"Value"列中的数值解决方案

你的数据格式为130 [23 - 40.2],包含整数、小数和负数,用正则表达式可以一次性提取所有目标数值,比多次拆分更高效可靠。

方法1:提取所有数值到列表

import pandas as pd
import re

# 假设prob是你的目标DataFrame
prob["Extracted_Values"] = prob["Value"].apply(lambda s: [float(num) for num in re.findall(r'-?\d+\.?\d*', s)])
print(prob["Extracted_Values"])

运行后,每个单元格的数值会被提取为数值型列表,比如130 [23 - 40.2]会转化为[130.0, 23.0, -40.2]。

方法2:拆分到单独列

如果需要将每个数值分配到独立列(如主值、范围下限、范围上限),可以用以下代码:

# 提取所有数值并展开为列
extracted_cols = prob["Value"].str.findall(r'-?\d+\.?\d*').apply(pd.Series)
# 给新列命名
extracted_cols.columns = ["Main_Value", "Range_Lower", "Range_Upper"]
# 合并到原DataFrame
prob = pd.concat([prob, extracted_cols], axis=1)
print(prob)

执行后原DataFrame会新增三列,分别对应示例中的130、23、-40.2。

原代码的问题说明

你写的x.str.split("[")[0]是取整个Series拆分后的第一个元素,而非每个单元格拆分后的第一部分。正确的单部分提取写法应为x.str.split("[").str[0],但这种方式只能提取第一个数值,无法处理括号内的范围值,因此正则表达式是更优解。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:07:36