Pandas遍历多参数多水平组合计算并拼接结果DataFrame
Pandas多参数组合遍历计算实现方案
注意事项
原示例代码中Y^2是Python的按位异或运算符,并非数学意义上的平方计算,和期望输出逻辑不符,实现时需要修正为幂运算写法Y**2才能得到正确结果。
实现步骤
- 将单组X、Y参数的计算逻辑封装为独立函数,输入参数值返回对应单行结果DataFrame
- 定义X、Y两个参数的候选取值列表
- 遍历两个参数所有取值的笛卡尔积组合,逐个调用计算函数生成单组结果
- 纵向拼接所有单组结果,重置索引后得到完整的全组合结果DataFrame
完整实现代码
import pandas as pd from itertools import product # 封装核心计算逻辑 def calc_result(X: float, Y: float) -> pd.DataFrame: A = X * Y B = X * (Y ** 2) # 传入标量时需要包装为列表,避免DataFrame初始化报错 return pd.DataFrame({"X": [X], "Y": [Y], "A": [A], "B": [B]}) # 定义参数候选值 X_list = [1, 2, 3, 4] Y_list = [2, 4, 6, 8] # 遍历所有组合收集计算结果 result_collector = [] for x, y in product(X_list, Y_list): result_collector.append(calc_result(x, y)) # 拼接所有结果 final_df = pd.concat(result_collector, ignore_index=True) # 打印验证结果 print(final_df)
无额外依赖的遍历写法
如果不想引入itertools库,可以直接用双重循环实现组合遍历,效果完全一致:
result_collector = [] for x in X_list: for y in Y_list: result_collector.append(calc_result(x, y)) final_df = pd.concat(result_collector, ignore_index=True)
运行上述代码输出的结果和给出的期望示例完全匹配。
内容的提问来源于stack exchange,提问作者vp_050
相关产品推荐
相关产品推荐

