识别Pandas DataFrame唯一分组并添加Solution_unique标识列
解决方法
核心思路是基于物料出入规则的列进行分组,而非原有的Solution列,再给每个分组分配唯一标识。以下是两种实用的实现方式:
方法一:使用groupby + ngroup()
假设你的DataFrame名为df,用来判断规则一致的列是add_materials和remove_materials(根据实际列名调整):
import pandas as pd # 按物料规则列分组,生成从0开始的唯一组ID df['Solution_unique'] = df.groupby(['add_materials', 'remove_materials']).ngroup() # 若想让标识从1开始,只需加1 # df['Solution_unique'] = df.groupby(['add_materials', 'remove_materials']).ngroup() + 1
方法二:使用factorize()
先把所有物料规则列合并成唯一的组合键,再生成标识:
# 将物料规则列合并为元组(避免字符串拼接可能产生的冲突) rule_combination = df[['add_materials', 'remove_materials']].apply(tuple, axis=1) # 生成唯一标识,返回的第一个值是分组ID,第二个是唯一组合的列表 df['Solution_unique'], _ = pd.factorize(rule_combination) # 同样可调整为从1开始计数 # df['Solution_unique'] += 1
注意事项
- 务必将所有参与判断规则一致性的列都加入分组列表或组合键中,比如如果还有其他物料相关列(如数量、规格),也要包含进去。
- 如果物料规则列是列表/数组类型,建议先转为字符串或元组,确保分组时能正确识别相等的组合。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

