如何从含'x ± a'格式的Pandas序列提取数值到NumPy数组?
解决方案
不需要把Series转成嵌套列表,Pandas自带的字符串处理方法可以直接批量操作每个元素,高效又简单,给你两种实用方法:
方法一:字符串分割法
直接用str.split按±分割字符串,取前半部分后清理空格、转数值,最后转成NumPy数组:
import pandas as pd import numpy as np # 示例Series s = pd.Series(['1.2 ± 0.3', '4.5 ± 0.2', '6.7 ± 0.1']) # 提取数值并转NumPy数组 X = s.str.split('±').str[0].str.strip().astype(float).to_numpy()
步骤拆解:
str.split('±'):把每个字符串按±拆成两个元素的列表str[0]:取出每个列表的第一个元素(也就是你要的x/y/z部分)str.strip():去掉字符串前后的空格astype(float):把字符串转成浮点数值to_numpy():将Series转为NumPy数组
方法二:正则表达式提取法
如果字符串格式固定,用正则匹配开头的数字部分更精准:
X = s.str.extract(r'^([\d.]+)').astype(float).to_numpy().flatten()
str.extract(r'^([\d.]+)'):匹配字符串开头的数字和小数点,提取出目标数值astype(float):转成浮点型to_numpy().flatten():把提取得到的DataFrame转成一维NumPy数组
两种方法都能得到你想要的结果,比如示例中运行后X会是array([1.2, 4.5, 6.7])。
内容的提问来源于stack exchange,提问作者James Craft
相关产品推荐
相关产品推荐

