pandas DataFrame互斥规则分组:求解最小分组数与最大同组集合
基于pandas互斥规则的球队分组实现
核心规则与目标
- 互斥判定逻辑:若两支球队在数据框的交叉单元格取值为1,说明二者存在共享球员的互斥约束,无法归入同一分组;取值为np.nan时无互斥限制,可同组开展活动。
- 核心实现目标:
- 构造尽可能大的合规同组球队集合
- 计算满足全部互斥约束所需的最少分组数量
- 适用场景:针对共50支球队的业务数据,通过分组结果明确哪些球队可在同一时段共同参与活动,输出最优可落地的分组方案。当前提供5支球队的简化示例用于逻辑演示。
示例参考
简化示例数据生成代码:
pd.DataFrame.from_dict(data={'team1': [np.nan,1.0,1.0,np.nan,np.nan], 'team2':[1.0,np.nan,np.nan,np.nan,np.nan], 'team3':[1.0,np.nan,np.nan,np.nan,1.0], 'team4':[np.nan,np.nan,np.nan,np.nan,np.nan], 'team5':[np.nan,np.nan,1.0,np.nan,np.nan]}, orient='index', columns=['team1', 'team2', 'team3', 'team4', 'team5'])
上述示例数据的行、列维度均为球队标识,完全匹配互斥标记规则。针对该简化场景的校验结果如下:
- 满足所有约束的最少分组数为2
- 一种规模最优的可行合规分组方案:
- group1 = ['team1', 'team4', 'team5']
- group2 = ['team2', 'team3']
内容的提问来源于stack exchange,提问作者JeB
相关产品推荐
相关产品推荐

