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

请求实现按日期累积字符串列唯一值的功能

问题描述

现有包含日期列(A列)与字符串值列(B列)的数据集,原始数据如下:

AB
101/02/23apple
201/02/23pear
301/02/23apple
402/02/23apple
502/02/23apple
602/02/23banana
702/02/23banana
802/02/23apple

需要实现按唯一日期分组,每日累积包含此前所有日期出现过的B列唯一字符串,期望输出如下:

AB
101/02/23apple
pear
102/02/23apple
pear
banana

尝试过基础累积方法,但针对字符串值无法得到预期结果,寻求可行方案。


解决方案一:Excel Power Query 实现

Power Query适合可视化处理这类累积去重分组需求,步骤如下:

  1. 选中数据区域,点击「数据」选项卡 → 「从表格/区域」,将数据导入Power Query编辑器。
  2. 提取每日唯一B值:
    • 点击「转换」→「分组依据」,分组列选A,新列名设为「每日唯一B」,操作选择「所有行」。
    • 对「每日唯一B」列,右键选择「转换」→「提取唯一值」,得到每个日期对应的唯一字符串列表。
  3. 构建累积唯一值列表:
    • 添加自定义列,输入公式:
      List.Accumulate(List.Range(#"分组依据"[A], 0, List.PositionOf(#"分组依据"[A], [A]) + 1), {}, (state, current) => List.Distinct(state & Table.SelectRows(#"分组依据", each [A] = current)[每日唯一B]{0}))
      
      该公式会累积当前日期及之前所有日期的唯一B值。
  4. 展开累积列表:点击累积列的展开按钮,选择「到新行」。
  5. 调整日期列格式:
    • 添加索引列,再添加自定义列判断是否为当前日期组的第一行,是则保留日期,否则为空。
    • 删除原日期列和索引列,将自定义列重命名为A。
  6. 关闭并上载到Excel,即可得到目标格式。

解决方案二:Python pandas 代码实现

如果用代码处理,pandas可快速完成需求:

import pandas as pd

# 加载原始数据(实际使用时可替换为pd.read_excel/pd.read_csv读取文件)
df = pd.DataFrame({
    'A': ['01/02/23']*3 + ['02/02/23']*5,
    'B': ['apple', 'pear', 'apple', 'apple', 'apple', 'banana', 'banana', 'apple']
})

# 提取每个日期对应的唯一B值
daily_unique = df.groupby('A')['B'].unique().reset_index()

# 构建累积唯一值集合
cumulative_data = []
seen_items = set()
for _, row in daily_unique.iterrows():
    seen_items.update(row['B'])
    cumulative_data.append({'A': row['A'], 'B': list(seen_items)})

# 转换为目标格式的DataFrame
result = pd.DataFrame(cumulative_data).explode('B').reset_index(drop=True)

# 处理日期列:仅保留每组第一行的日期,其余单元格为空
result['A'] = result.groupby('A')['A'].transform(lambda x: x.iloc[0] if x.name == x.iloc[0] else '')

print(result)

运行代码后输出结果:

A       B
0  01/02/23   apple
1            pear
2  02/02/23   apple
3            pear
4            banana

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:17:52