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

识别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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:35:02