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

如何按Date与ID对Multi-index执行Roll-up并生成指标?

按Date和ID进行Multi-index Roll-up并生成指标的实现方案

没问题,我来帮你搞定这个多维度聚合的需求!咱们用Python的pandas来实现,这是处理这类表格数据的首选工具,步骤清晰易懂。

第一步:准备输入数据

先把你给出的原始数据转换成pandas的DataFrame格式,方便后续操作:

import pandas as pd

# 输入数据
raw_data = {
    'Date': ['201712', '201712', '201712', '201801'],
    'ID': [123, 456, 123, 123],
    'Flag': ['-', '+', '+', '+'],
    'Action Type': ['Delete', 'Add', 'Add', 'Change']
}
df = pd.DataFrame(raw_data)

第二步:定义聚合规则

根据你的预期输出,我们需要针对Flag和Action Type列分别定义聚合逻辑:

  • Flag列:如果同一组(相同Date+ID)里同时存在-和+,就返回*;只有-返回-,只有+返回+
  • Action Type列:去重后将所有不同的操作类型用&连接,比如同一组有Add和Delete就变成Add & Delete

对应的聚合函数如下:

# 处理Flag的聚合逻辑
def aggregate_flag(series):
    unique_flags = series.unique()
    if '-' in unique_flags and '+' in unique_flags:
        return '*'
    return '-' if '-' in unique_flags else '+'

# 处理Action Type的聚合逻辑(去重后排序拼接,保证结果顺序统一)
def aggregate_action(series):
    unique_actions = sorted(series.unique())
    return ' & '.join(unique_actions)

第三步:执行Multi-index Roll-up

用groupby按Date和ID分组,然后应用上面定义的聚合函数即可:

# 方案1:聚合后Date和ID保持为普通列
result_as_columns = df.groupby(['Date', 'ID'], as_index=False).agg({
    'Flag': aggregate_flag,
    'Action Type': aggregate_action
})

# 方案2:聚合后Date和ID作为Multi-index(符合你说的Multi-index Roll-up)
result_as_multiindex = df.groupby(['Date', 'ID']).agg({
    'Flag': aggregate_flag,
    'Action Type': aggregate_action
})

第四步:查看结果

运行上面的代码后,result_as_columns的输出就是你预期的格式:

DateIDFlagAction Type
201712123*Add & Delete
201712456+Add
201801123+Change

如果用result_as_multiindex,则会得到以Date和ID为复合索引的结果:

Flag      Action Type
Date   ID
201712 123    *  Add & Delete
       456    +            Add
201801 123    +         Change

扩展说明

如果需要额外生成其他指标(比如每个组的行数),只需要在agg里添加对应的规则即可,比如:

result_with_count = df.groupby(['Date', 'ID'], as_index=False).agg({
    'Flag': aggregate_flag,
    'Action Type': aggregate_action,
    'Record Count': 'size'  # 新增计数指标
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:52:57