Pandas多级索引DataFrame无循环为对应operator的sc列赋随机数
实现方法
不需要写任何显式循环,通过groupby分组赋值即可实现需求,核心代码如下:
import numpy as np def assign_sc_values(group): current_op = group.name # 定位当前操作符对应的sc列 target_cols = ('scalars', current_op) # 生成匹配行列数的0-100随机整数 group[target_cols] = np.random.randint(0, 101, size=(len(group), len(df[target_cols].columns))) return group # 按operator列分组后执行赋值 df = df.groupby(('operator', '', ''), group_keys=False).apply(assign_sc_values)
逻辑说明
- 按
operator列的值对DataFrame做分组,相同操作符的行都会被分到同一组 - 对每个分组,直接获取对应操作符下的所有sc开头列,生成符合形状的随机整数批量赋值
- 所有遍历逻辑由pandas内部优化实现,无用户侧显式循环
运行后即可得到预期效果:只有每行operator值对应的sc列会被填充随机数,其余列保持NaN不变。
内容的提问来源于stack exchange,提问作者DinosRoar
相关产品推荐
相关产品推荐

