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

如何在Python Pandas中使用变量作为replace函数的替换值

替换DataFrame中body列的图片URL为baseUrl+id+.webp格式

需求很明确:把DataFrame里body列中包含的图片URL,替换成https://f.com/加上对应行的id值再加上.webp的格式,比如把"https:\/\/www.f.it\/media\/catalog\/product\/2\/4\/240297_1.jpg?..."改成"https:\/\/f.com\/982951473.webp"。

你原来的代码里,直接用df.replace没法实现每行对应自己的id值替换,因为var是一个Series,但replace的value参数不能直接这样关联每行的变量。正确的做法是用str.replace结合apply或者lambda函数,让每行替换时引用自己的id:

import pandas as pd

df = pd.DataFrame({ 
    'id': ["982951473","000590051"],
    'body': [
        "<script type=\"application/ld+json\">{\"image\":\"https:\/\/www.f.it\/media\/catalog\/product\/2\/4\/240297_1.jpg?optimize=medium&fit=bounds&height=265&width=265&canvas=265:265\",\"sku\":\"982951473\"}</script>",
        "<script type=\"application/ld+json\">{\"image\":\"https:\/\/www.f.it\/media\/catalog\/product\/0\/0\/000590051_rinazina_spray.jpg?optimize=medium&fit=bounds&height=265&width=265&canvas=265:265\",\"sku\":\"000590051\"}</script>"
    ]
})

# 遍历每行替换对应的图片URL
df['body'] = df.apply(
    lambda row: row['body'].replace(
        # 匹配image字段里的旧URL部分
        r'https:\/\/www.f.it\/.*?(?=",)', 
        f'https:\/\/f.com\/{row["id"]}.webp',
        regex=True
    ),
    axis=1
)

print(df.to_string())

代码说明:

  • 用df.apply(axis=1)遍历每一行,这样就能拿到当前行的id值
  • 正则表达式r'https:\/\/www.f.it\/.*?(?=",)': 匹配从https://www.f.it/开始,直到遇到",(也就是image字段结束的位置)的所有内容,确保只替换图片URL部分
  • 替换后的内容直接用当前行的id拼接成目标URL

运行后输出的body列内容就会变成:

<script type="application/ld+json">{"image":"https:\/\/f.com\/982951473.webp","sku":"982951473"}</script>
<script type="application/ld+json">{"image":"https:\/\/f.com\/000590051.webp","sku":"000590051"}</script>

完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:20:43