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

如何高效将jpg图片作为额外列加入汽车信息pandas数据框

优化属性提取代码

你原来的循环拆分写法确实冗余,直接用pandas批量拆分即可,代码简洁性和运行效率都更高:

import os
import pandas as pd
import numpy as np
from PIL import Image

# 配置路径
img_root = r"你的图片存放目录"
# 筛选所有jpg文件,同时生成完整路径
car_files = [f for f in os.listdir(img_root) if f.lower().endswith(".jpg")]
full_img_paths = [os.path.join(img_root, f) for f in car_files]

# 定义属性列名,顺便补上最后3位唯一标识符的字段
attr_cols = [
    "make", "model", "year", "msrp", "front_wheel_size", "sae_net_hp",
    "displacement", "engine_type", "width", "height", "length", "mpg",
    "drivetrain", "passenger_capacity", "doors", "body_style", "unique_id"
]
# 批量拆分文件名生成属性表,不需要单独维护十几个列表
df = pd.DataFrame(
    [f.rsplit(".", 1)[0].split("_") for f in car_files],
    columns=attr_cols
)

最高效添加图片列的方案

分两种场景按需选择:

  1. 优先推荐:存图片本地路径
    这是性能开销最低、最通用的方案,不会让DataFrame变得臃肿,后续需要用图片时读路径加载即可,添加方式一行代码搞定:

    df["img_path"] = full_img_paths
    

    65000条数据可以瞬间完成添加,几乎没有额外内存占用。

  2. 特殊需求:存图片像素数据
    如果你确实需要把图片内容直接存入DataFrame(比如后续直接用于模型训练,不想每次单独读文件),可以用apply批量加载,建议提前把图片缩放到你需要的尺寸,避免内存溢出:

    def load_resize_img(path, target_size=(224, 224)):
        img = Image.open(path).resize(target_size)
        # 可根据需求返回PIL对象/ numpy数组/ 二进制字符串
        return np.array(img)
    
    df["img_data"] = df["img_path"].apply(load_resize_img)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:36:03