如何修改代码将for循环处理pandas数据的输出保存为目标列表
问题原因
- 你的代码使用了两层嵌套循环,每遍历一行数据时,内层的三次循环会把当前行的
Start_position减1后依次赋值给startpos的所有三个位置,导致前一行的计算结果被后一行的值反复覆盖,所以无法得到预期输出。
方案1:修改现有循环逻辑
直接移除内层循环,用enumerate绑定行序和数组索引即可:
import numpy as np # 初始化时直接指定int类型,避免输出带小数点的浮点数 startpos = np.zeros(3, dtype=int) for idx, ind in enumerate(mutate1.index): startpos[idx] = mutate1['Start_position'][ind] - 1 print(startpos)
运行后输出:[38512138 38511501 38511376],符合预期。
方案2:更高效的pandas向量化写法
不需要手动写循环,一行代码就能实现,数据量越大效率优势越明显:
# 输出为列表格式 startpos = (mutate1['Start_position'] - 1).tolist() # 如果需要numpy数组格式,换成以下写法 # startpos = (mutate1['Start_position'] - 1).to_numpy()
内容的提问来源于stack exchange,提问作者Geinkehdsk
相关产品推荐
相关产品推荐

