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

Pandas DataFrame按a/b/c序列分组求和及时间提取需求求助

问题描述

给定如下DataFrame:

Name COST      Timestamp
0   c   8   2023-09-20 15:14:46
1   a   8   2023-09-20 15:14:48
2   c   9   2023-09-20 15:14:55
3   b   10  2023-09-20 15:15:00
4   c   4   2023-09-20 15:15:02
5   a   9   2023-09-20 15:15:04
6   b   3   2023-09-20 15:15:12
7   a   3   2023-09-20 15:15:17
8   c   6   2023-09-20 15:15:20
9   c   6   2023-09-20 15:15:29

需要生成新DataFrame,规则如下:

  • 按包含a、b、c的完整序列分组(元素出现顺序无关)
  • 每组sum_cost为组内a、b、c各自最后出现记录的COST之和
  • 每组Timestamp取组内最晚的时间戳
  • 同一名称组内多次出现时,取最后一条记录

示例说明:

  • 第一组取索引1的a、索引2的c、索引3的b,sum_cost=8+9+10=27,Timestamp取索引3的2023-09-20 15:15:00
  • 第二组取索引4的c、索引5的a、索引6的b,sum_cost=4+9+3=16,Timestamp取索引6的2023-09-20 15:15:12

期望输出:

sum_cost   Timestamp
0   27  2023-09-20 15:15:00
1   16  2023-09-20 15:15:12
解决方案

通过以下步骤实现需求:

  1. 生成分组标识:遍历数据,每当集齐a、b、c三个元素后,开启新分组
  2. 提取每组内各名称的最后一条记录
  3. 按分组计算成本总和与最晚时间戳

代码实现:

import pandas as pd

# 加载原始数据
df = pd.DataFrame({
    'Name': ['c', 'a', 'c', 'b', 'c', 'a', 'b', 'a', 'c', 'c'],
    'COST': [8, 8, 9, 10, 4, 9, 3, 3, 6, 6],
    'Timestamp': pd.to_datetime(['2023-09-20 15:14:46', '2023-09-20 15:14:48',
                                '2023-09-20 15:14:55', '2023-09-20 15:15:00',
                                '2023-09-20 15:15:02', '2023-09-20 15:15:04',
                                '2023-09-20 15:15:12', '2023-09-20 15:15:17',
                                '2023-09-20 15:15:20', '2023-09-20 15:15:29'])
})

# 步骤1:生成分组ID
seen = set()
group_id = 0
groups = []
for name in df['Name']:
    seen.add(name)
    groups.append(group_id)
    # 集齐三个元素后重置分组
    if len(seen) == 3:
        seen.clear()
        group_id += 1
df['group'] = groups

# 步骤2:提取每组内各Name的最后一条记录
last_records = df.groupby(['group', 'Name'], as_index=False).last()

# 步骤3:计算每组的sum_cost和最晚Timestamp
result = last_records.groupby('group').agg(
    sum_cost=('COST', 'sum'),
    Timestamp=('Timestamp', 'max')
).reset_index(drop=True)

print(result)

运行后输出:

sum_cost           Timestamp
0        27 2023-09-20 15:15:00
1        16 2023-09-20 15:15:12

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:01:29