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

如何遍历DataFrame将vec_red等指定列替换为new_data对应值

pandas DataFrame指定多列批量赋值方案

直接使用pandas向量化操作实现即可,性能远高于嵌套循环,完全适配你的需求场景:
因为你提到new_data的元素顺序和DataFrame的索引完全对应,直接通过数组广播赋值,就能实现单值对应行三列同时更新:

import numpy as np
import pandas as pd

# 假设你的DataFrame变量名为df,目标列名为val_red、val_green、val_blue
df[['val_red', 'val_green', 'val_blue']] = new_data[:, np.newaxis]

如果你要按列位置赋值(替换第3到第5列,pandas列索引从0开始计数,对应索引为2、3、4),可以用iloc实现:

df.iloc[:, 2:5] = new_data.reshape(-1, 1)

若必须沿用原有嵌套循环框架(不推荐,仅做参考)

你现有循环的索引顺序和label_idx的递增逻辑已经和DataFrame行顺序对齐,直接按索引定位行赋值即可:

label_idx = 0
for i in range(321):
    for j in range(284):
        df.loc[label_idx, ['val_red', 'val_green', 'val_blue']] = new_data[label_idx]
        label_idx += 1

注意事项

  • 你描述中出现了vec_red/vec_green/vec_blue和val_red/val_green/val_blue两组列名,使用时请替换为你实际DataFrame中的列名
  • 十万行级别的数据处理场景下,向量化操作性能是循环的百倍以上,无特殊需求优先使用第一种方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 07:15:03