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

如何将pandas str.find的计算结果应用到其他列实现非循环数据提取

报错原因

你之前的df["Data"].str[df["Ptr"]]写法报错,是因为pandas字符串访问器的[]运算符默认按标签索引,不会自动逐行取对应位置的切片,所以不能直接传入位置序列使用。

方法1:正则表达式实现(最简洁)

直接用pandas内置的str.extract方法匹配提取目标数值,全程矢量化操作,无需循环:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    "Data": ["Good Temperature 14.0", "Bad Temperature 28.0", "Very Odd Temperature -42.3"]
})

# 提取Temperature后的浮点数,直接转float类型
df["Temperature"] = df["Data"].str.extract(r'Temperature\s*(-?\d+\.?\d*)').astype(float)

正则模式说明:\s*适配Temperature和数值之间的任意个空格,-?匹配可选负号,\d+\.?\d*匹配整数、小数格式的数字。

方法2:基于原有位置计算逻辑实现

如果不想用正则,可以用str.slice方法实现逐行按位置切片,支持传入Series作为起始位置参数:

# 计算数值起始位置
df["Ptr"] = df["Data"].str.find("Temperature") + len("Temperature")
# 从起始位置切片后转float
df["Temperature"] = df["Data"].str.slice(start=df["Ptr"]).astype(float)

两种方法最终得到的Temperature列都是浮点类型的目标数值,性能远高于逐行循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:36:05