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

如何将Pandas DataFrame目标行列表前两位替换为0,剩余位替换为图像宽高

解决方案

前置准备

先导入需要的依赖库,你提到的nan一般是numpy定义的空值类型,所以需要同步导入numpy:

import pandas as pd
import numpy as np

核心实现逻辑

用pandas基础的apply逐行处理即可,逻辑直观容易理解,完全适配你的需求:

  1. 先判断当前行是否符合处理条件:class列的列表元素均为No finding
  2. 符合条件的行直接生成新的BB列嵌套列表,每个子列表统一替换为[0, 0, 当前行宽度w, 当前行高度h],子列表数量和原BB列保持一致

完整可运行代码

# 定义单行处理函数
def update_bb(row):
    # 可根据实际需求调整判断条件,如果只要存在'No finding'就处理,改为if 'No finding' in row['class']即可
    if all(item == 'No finding' for item in row['class']):
        # 生成和原BB子列表数量相同的新坐标列表
        row['BB'] = [[0, 0, row['w'], row['h']] for _ in row['BB']]
    return row

# 对整个DataFrame逐行应用处理逻辑
df = df.apply(update_bb, axis=1)

说明

这个方案没有直接修改原列表中的nan值,而是直接生成符合要求的新列表,避免了因为nan类型(比如是Python原生None还是numpy.nan)导致的适配问题,处理后的BB列输出和你给出的预期效果完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:18:04