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

如何提取Campaign列中ACoS对应的数值并写入新targetAcos列?

问题需求

从DataFrame的Campaign列字符串中提取ACoS附近的数值,存入新建的targetAcos列。当前用pandas的str.replace结合正则未成功,需正确实现方案及原理说明。

用户原代码:

import pandas as pd

data = [{"Campaign" : "Sf l Spy l Branded l ACoS 20 l Manual NX"}]
df = pd.DataFrame(data)
df.insert(1,"targetAcos", 0)
df["targetAcos"] = df["Campaign"].str.replace(r' l ACoS \(.*)\l', r'\1', regex=True)

print(df["targetAcos"])

原代码问题分析

  • 正则表达式写错:用了中文括号\(.*\),但目标字符串里是空格分隔的ACoS 20,没有括号;同时\l是无效转义,实际应该匹配空格加l。
  • 方法选错:str.replace是替换匹配内容,而我们需要提取特定数值,用str.extract才是正确的选择。

正确实现代码

import pandas as pd

data = [{"Campaign" : "Sf l Spy l Branded l ACoS 20 l Manual NX"}]
df = pd.DataFrame(data)
# 提取ACoS后的数值并转为浮点型
df["targetAcos"] = df["Campaign"].str.extract(r'ACoS (\d+)', expand=False).astype(float)

print(df)

运行后输出:

Campaign  targetAcos
0  Sf l Spy l Branded l ACoS 20 l Manual NX        20.0

原理说明

  1. 正则表达式解析:r'ACoS (\d+)'
    • ACoS :精准匹配字符串中固定的"ACoS "文本(注意后面的空格)
    • (\d+):捕获组,匹配1个或多个连续数字,这就是我们要提取的ACoS数值
  2. str.extract的作用:专门用于从字符串中提取正则捕获组的内容,expand=False让结果返回Series,刚好可以直接赋值给新列
  3. 类型转换:提取出的结果是字符串类型,用astype(float)转为浮点型,方便后续做数值运算

如果需要支持小数(比如ACoS后面是20.5),可以把正则改成r'ACoS (\d+\.?\d*)',这样能匹配整数和小数格式的数值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:25:14