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

在Pandas中按ID-A、ID-B分组,统计ID-C数量及时间起止值

Pandas分组统计实现方案

步骤说明:

  1. 转换时间列类型:先将Time列转为datetime类型,确保后续取最小/最大时间的逻辑正确(字符串类型的时间排序可能不符合预期)。
  2. 分组聚合:按ID-A和ID-B分组,对ID-C统计数量,对Time分别取最小(start_time)和最大(end_time)值。
  3. 格式化时间(可选):如果需要将结果中的时间转回原字符串格式,可通过strftime方法处理。

完整代码示例:

import pandas as pd

# 构造原始DataFrame
data = {
    'ID-A': [1, 1, 1, 2, 2, 2],
    'ID-B': ['A', 'A', 'A', 'B', 'C', 'C'],
    'ID-C': ['X', 'X', 'Y', 'Y', 'Y', 'Y'],
    'Time': ['2022/01/01 09:00:00', '2022/01/01 09:10:00', '2022/01/02 10:15:00',
             '2022/01/01 11:45:00', '2022/01/01 01:00:00', '2022/01/01 12:00:00']
}
df = pd.DataFrame(data)

# 转换Time列为datetime类型
df['Time'] = pd.to_datetime(df['Time'])

# 分组聚合
result = df.groupby(['ID-A', 'ID-B']).agg(
    Value=('ID-C', 'count'),
    start_time=('Time', 'min'),
    end_time=('Time', 'max')
).reset_index()

# 可选:将时间转回原字符串格式
result['start_time'] = result['start_time'].dt.strftime('%Y/%m/%d %H:%M:%S')
result['end_time'] = result['end_time'].dt.strftime('%Y/%m/%d %H:%M:%S')

print(result)

输出结果:

ID-A ID-B  Value           start_time             end_time
0     1    A      3  2022/01/01 09:00:00  2022/01/02 10:15:00
1     2    B      1  2022/01/01 11:45:00  2022/01/01 11:45:00
2     2    C      2  2022/01/01 01:00:00  2022/01/01 12:00:00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:30:45