Pandas如何循环实现批量设置q(i)列为np.nan,避免重复写44次代码
Pandas循环实现批量赋值方案
直接遍历1到44的偏移量,动态生成对应q列名即可,和你原逐行代码的运行逻辑完全一致,代码量大幅减少:
import numpy as np # 循环覆盖i=1到i=44的所有场景 for offset in range(1, 45): target_col = f'q{offset}' df.loc[df['id'] != df['id'].shift(-offset), target_col] = np.nan
逻辑说明
range(1,45)生成1到44的整数,正好对应你需要的偏移位数和q列后缀- 用f-string动态拼接得到
q1~q44的列名,无需手动逐个声明 - 每轮循环的判断条件、赋值逻辑和你原手写的单条代码完全等价,执行结果无差异
如果需要更高的执行性能,也可以用向量化操作批量处理,不过44次的轻量循环已经完全满足常规使用需求,没有额外性能负担。
内容的提问来源于stack exchange,提问作者rafine
相关产品推荐
相关产品推荐

