如何在遍历DataFrame列表时保留enumerate写法修改指定列值
用enumerate循环修改DataFrame列表的正确写法
直接用enumerate遍历列表,同时拿到索引和对应的DataFrame,修改后同步到列表里就行,代码如下:
for i, df in enumerate(dataframes_list): # 定位species为specC的行,修改perc_ID为100 df.loc[df['species'] == 'specC', 'perc_ID'] = 100 # 可选:如果担心引用传递的问题,把修改后的DataFrame重新赋值回列表 dataframes_list[i] = df
常见错误排查
如果之前写的时候报语法错,大概率是这几个问题:
- 列名没加引号:虽然
df.species写法可行,但统一用df['species']更稳妥,避免列名含特殊字符时出错 - 赋值逻辑错误:比如写成
dataframes_list[i] = df.loc[df.species == "specC","perc_ID"]=100,这属于语法错误,要直接修改DataFrame对象而非错误嵌套赋值 - 缩进错误:修改代码没放在循环块内,导致只执行一次修改操作
这种写法和你之前处理specA替换、分组求和的enumerate循环逻辑完全一致,修改后的DataFrame列表可以正常用于后续合并操作。
内容的提问来源于stack exchange,提问作者RobH
相关产品推荐
相关产品推荐

