Python迭代Excel三列参数组合计算并存储关键单元格值问题
你的现有代码的核心问题有两个:
- 结果存储的代码缩进错误,放在了三层循环外,只会执行一次,无法收集全部1188组组合的计算结果
- 你尝试用
KeyValue{i,j,k}这种动态变量名存储结果的写法不符合Python语法规范,应该用列表、字典或DataFrame这类容器统一存储。
修正后的完整代码如下:
import pandas as pd # 统一文件路径,避免重复写路径出错 file_path = r"C:\Users\MuellerM\CSV\Book1.xlsx" # 读取各工作表数据 main_df = pd.read_excel(file_path, sheet_name='Sheet1', header=0, engine='openpyxl') katode_df = pd.read_excel(file_path, sheet_name='Katodes', header=0, engine='openpyxl') anode_df = pd.read_excel(file_path, sheet_name='Anodes', header=0, engine='openpyxl') lam_df = pd.read_excel(file_path, sheet_name='Lambs', header=0, engine='openpyxl') # 初始化结果存储列表,后续可直接转成DataFrame导出 result_list = [] # 遍历所有列组合 for k_idx, k_col in enumerate(katode_df.columns): # 替换主表Katode列值 main_df.loc[:, 'Katode'] = katode_df[k_col] for a_idx, a_col in enumerate(anode_df.columns): # 替换主表Anode列值 main_df.loc[:, 'Anode'] = anode_df[a_col] for l_idx, l_col in enumerate(lam_df.columns): # 替换主表Lam列值 main_df.loc[:, 'Lam'] = lam_df[l_col] # 获取当前组合的关键值 current_key = main_df['Key'].iloc[0] # 存储结果,同时保留列索引和列名方便核对 result_list.append({ 'katode列索引': k_idx, 'katode列名': k_col, 'anode列索引': a_idx, 'anode列名': a_col, 'lam列索引': l_idx, 'lam列名': l_col, '计算关键值': current_key }) # 将结果转成DataFrame,可直接导出到Excel result_df = pd.DataFrame(result_list) result_df.to_excel(r"C:\Users\MuellerM\CSV\组合计算结果.xlsx", index=False, engine='openpyxl')
代码说明
- 用
enumerate同时获取列的索引和列名,方便后续核对组合来源 - 用列表存储所有组合的结果,最后统一转成DataFrame导出到Excel,方便后续分析
- 统一了文件路径的写法,用原始字符串(r开头)避免转义符出错
- 缩进修正后,每次列替换完成后都会读取一次关键值,确保所有组合都被遍历计算
内容的提问来源于stack exchange,提问作者maxschwein58
相关产品推荐
相关产品推荐

