You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何结合Pandas Groupby与Itertools Product生成分组参数组合

问题分析与解决

你的代码核心问题是lambda函数里误用了全局的df,而非分组后的子数据集x:每轮分组执行时,你都用了整个DataFrame的param1/param2/param3生成笛卡尔积,而非当前生产线对应的参数集合,这才导致行数远超预期。

修正后的代码

import pandas as pd
from itertools import product

# 示例原始DataFrame结构参考:
#   line param1 param2 param3
# 0    1      a      x      m
# 1    1      b      y      n
# 2    2      c      p      q
# 3    2      d      r      s

result = df.groupby('line').apply(
    lambda x: pd.DataFrame(
        data=list(product(x['param1'], x['param2'], x['param3'])),
        columns=['param1', 'param2', 'param3']
    )
).reset_index(level=1, drop=True).reset_index()

关键改动说明

  • 将df['param1']替换为x['param1']:x是groupby后对应单条生产线的子DataFrame,确保只使用当前生产线的参数生成组合
  • reset_index(level=1, drop=True):先移除分组内的临时索引,再重置索引得到结构整洁的最终结果

执行后,每条生产线会基于自身参数生成len(param1)*len(param2)*len(param3)个组合(比如每个参数各2个值时,单条生产线生成8种),两条生产线总计16行,完全匹配需求。

内容的提问来源于stack exchange,提问作者Me9217419274

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 08:54:58