如何在pandas中循环遍历.iloc索引值实现多列按均值偏差批量运算
多列DataFrame批量对应参数运算简化方案
优先推荐使用pandas原生向量化运算,完全避免嵌套循环,代码简洁且运行效率更高:
核心逻辑是利用pandas的广播特性,直接对整表做批量运算,无需逐行逐列遍历,适配任意列数场景:
# 一步完成所有列的 (值 - 对应Mean)/对应Dev 运算 res_df = (df - df1['Mean'].values) / df1['Dev'].values # 若需要逐行逐列打印结果,可遍历结果表 for _, row in res_df.iterrows(): for val in row: print(val)
运行后得到的res_df就是和原df结构完全一致的结果表,每列都完成了对应的标准化运算。
如果你确实需要通过循环遍历索引实现,也可以通过遍历列索引简化代码,无需逐列硬编码逻辑:
# 遍历每一行 for row_idx in range(len(df)): # 遍历每一列的索引,自动适配列数 for col_idx in range(len(df.columns)): current_val = df.iloc[row_idx, col_idx] mean = df1.iloc[col_idx]['Mean'] dev = df1.iloc[col_idx]['Dev'] print((current_val - mean) / dev)
以上两种写法都不需要随着列数增加修改代码,只要保证df1的行数和df的列数一一对应即可正常运行。
内容的提问来源于stack exchange,提问作者Nithin Reddy
相关产品推荐
相关产品推荐

