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

如何通过遍历数组的for循环替换DataFrame中的指定值?

按指定索引替换Pandas DataFrame列值的解决方案

你的需求是将DataFrame中索引为1和3的行的ind_name列,分别替换为one和three。原代码的双层循环逻辑有问题——它会让每个索引被所有目标值遍历覆盖,最终所有指定索引都会被设为最后一个designation值,无法达到预期效果。

方法一:配对遍历赋值(适合小数据集)

用zip()将索引数组和目标值数组一一配对,遍历每一组并赋值:

import pandas as pd

data = [['h', 'zero'], ['i', 'circle'], ['j', 'two'], ['k','square']] 
df = pd.DataFrame(data, columns=['letters', 'ind_name'])

ind_num = [1, 3]
designation = ['one', 'three']

# 配对索引与目标值,逐个替换
for idx, new_val in zip(ind_num, designation):
    df.iloc[idx, 1] = new_val  # iloc[row索引, 列索引]直接赋值

print(df)

方法二:批量赋值(高效推荐,适合大数据集)

利用Pandas的批量操作特性,直接选中目标行和列一次性赋值,避免循环带来的性能损耗:

import pandas as pd

data = [['h', 'zero'], ['i', 'circle'], ['j', 'two'], ['k','square']] 
df = pd.DataFrame(data, columns=['letters', 'ind_name'])

ind_num = [1, 3]
designation = ['one', 'three']

# 批量替换:先获取列的索引位置,再批量赋值
target_col_idx = df.columns.get_loc('ind_name')
df.iloc[ind_num, target_col_idx] = designation

print(df)

最终输出结果

两种方法都会得到预期的DataFrame:

letters ind_name
0       h     zero
1       i      one
2       j      two
3       k    three

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:54:27