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

如何迭代Pandas DataFrame的url列并修改值实现图片下载替换

实现步骤

1. 安装依赖

先确保安装所需库:

pip install pandas requests

2. 核心代码实现

import pandas as pd
import requests
import os

# 加载你的DataFrame(示例:从CSV读取)
# df = pd.read_csv("your_data.csv")

# 遍历每一行处理图片URL
for idx, row in df.iterrows():
    original_url = row["url"]
    # 生成文件名,默认从0开始编号;要从1开始的话改成 idx+1
    new_filename = f"image_{idx}.jpg"
    
    try:
        # 流式下载图片,适配大文件
        resp = requests.get(original_url, stream=True)
        resp.raise_for_status()  # 捕获HTTP请求错误
        
        # 写入图片到脚本所在目录
        with open(new_filename, "wb") as img_file:
            for chunk in resp.iter_content(chunk_size=8192):
                img_file.write(chunk)
        
        # 替换DataFrame中的原URL为新文件名
        df.loc[idx, "url"] = new_filename
    
    except Exception as e:
        # 处理下载失败的情况,可按需调整
        print(f"处理URL {original_url} 失败: {str(e)}")
        # 可选:下载失败时标记为特定值,比如 df.loc[idx, "url"] = "download_failed"

# 保存修改后的DataFrame(可选)
# df.to_csv("updated_data.csv", index=False)

关键细节说明

  • 文件名自定义:默认用DataFrame的索引命名,若需要起始编号为1,把idx改成idx+1即可。
  • 异常防护:避免单个URL下载失败导致整个脚本中断,同时打印错误信息方便排查问题。
  • 大文件优化:用流式下载和分块写入,避免大图片占用过多内存。
  • 防封禁建议:如果批量下载数量大,可导入time库,在循环内添加time.sleep(1)降低请求频率,避免被目标网站限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:25:15