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

基于Pandas DataFrame按物料组合分组聚合订单号的需求

解决方案:分组合并Pandas DataFrame中的订单编号

没问题,这可以通过Pandas的分组(groupby)和聚合操作轻松实现。核心思路是把物料编号(material)、工厂(plant)以及所有m1至m5的列作为分组依据,然后将每组内的订单编号合并成一个字符串。

完整代码示例

import pandas as pd

# 先构造你的示例DataFrame(如果已有df可跳过这部分)
df = pd.DataFrame({
    'material': [24990, 24990, 24990, 24990, 166621, 166621, 240758, 276009, 276009],
    'plant': [89952, 89952, 89952, 89952, 3062, 3062, 3062, 3062, 3062],
    'Order': ['4568789', '5098710', '9448609', '1007081', '18364103', '78309139', '55146035', '38501581', '38575428'],
    'm1': [1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0],
    'm2': [1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0],
    'm3': [0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0],
    'm4': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    'm5': [0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0]
})

# 执行分组聚合:按material、plant和m1-m5分组,合并Order列
grouped_df = df.groupby(
    ['material', 'plant', 'm1', 'm2', 'm3', 'm4', 'm5']
)['Order'].agg(', '.join).reset_index()

# 查看结果
print(grouped_df)

关键步骤说明

  1. 确定分组键:我们需要同时按material、plant以及m1到m5所有列分组,这样才能保证只有物料编号相同、工厂相同且m1-m5组合完全一致的记录会被分到同一组。
  2. 聚合订单列:使用agg(', '.join)把每组内的Order值合并成一个用逗号分隔的字符串。如果你的Order列是数值类型(比如int),记得先转成字符串再合并,避免报错:
    # 处理数值类型的Order列
    grouped_df = df.groupby(
        ['material', 'plant', 'm1', 'm2', 'm3', 'm4', 'm5']
    )['Order'].agg(lambda x: ', '.join(x.astype(str))).reset_index()
    
  3. 重置索引:groupby操作后,分组键会变成DataFrame的索引,用reset_index()把它们转回普通列,方便后续查看和处理。

运行后结果示例

materialplantm1m2m3m4m5Order
24990899521.01.00.00.00.04568789, 5098710
24990899520.00.01.00.01.09448609, 1007081
16662130620.00.00.00.00.018364103
16662130620.01.00.00.00.078309139
24075830621.01.01.00.00.055146035
27600930621.01.01.00.00.038501581, 38575428

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:57:02