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

Power Query分组后展开:如何计算工厂最早安装年份?

问题描述

现有数据集示例(零件按使用工厂编号和投产年份分组,零件唯一):

PartFactoryPart Install Year
11002018
21002018
31002018
32002019
33002020
44002019
54002020
65002018

期望输出:将所有关联零件按其安装过的编号最小的工厂进行分组(Part Grouping),并计算该工厂内所有零件的最早投产年份(Factory Install Year):

PartFactoryPart Install YearPart GroupingFactory Install Year
110020181002018
210020181002018
310020181002018
320020191002018
330020201002018
440020194002019
540020204002019
650020185002018

目前无法实现Factory Install Year的创建,需解决方法。


解决方案

方法1:SQL实现

核心逻辑是先按零件分组获取每个零件对应的最小工厂编号,再按工厂分组获取该工厂的最早投产年份,最后将两个计算结果关联回原表:

WITH part_min_factory AS (
    -- 获取每个零件对应的最小工厂编号
    SELECT 
        Part,
        MIN(Factory) AS Part_Grouping
    FROM your_table
    GROUP BY Part
),
factory_min_year AS (
    -- 获取每个工厂的最早投产年份
    SELECT 
        Factory,
        MIN(Part_Install_Year) AS Factory_Install_Year
    FROM your_table
    GROUP BY Factory
)
-- 关联原表与中间计算结果
SELECT 
    t.Part,
    t.Factory,
    t.Part_Install_Year,
    pmf.Part_Grouping,
    fmy.Factory_Install_Year
FROM your_table t
JOIN part_min_factory pmf ON t.Part = pmf.Part
JOIN factory_min_year fmy ON pmf.Part_Grouping = fmy.Factory;

方法2:Python Pandas实现

通过分组计算得到中间结果,再合并回原数据集:

import pandas as pd

# 加载原数据(实际使用时可替换为读取文件逻辑)
df = pd.DataFrame({
    'Part': [1,2,3,3,3,4,5,6],
    'Factory': [100,100,100,200,300,400,400,500],
    'Part Install Year': [2018,2018,2018,2019,2020,2019,2020,2018]
})

# 1. 计算每个零件对应的最小工厂编号
part_grouping = df.groupby('Part')['Factory'].min().reset_index(name='Part Grouping')
# 2. 计算每个工厂的最早投产年份
factory_min_year = df.groupby('Factory')['Part Install Year'].min().reset_index(name='Factory Install Year')

# 3. 合并结果到原表
result = df.merge(part_grouping, on='Part')
result = result.merge(factory_min_year, left_on='Part Grouping', right_on='Factory').drop(columns='Factory_y')
result = result.rename(columns={'Factory_x': 'Factory'})

print(result)

执行后即可得到符合期望的输出结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:10:33