首页 > 解决方案 > Python 按两列分组,然后获取最早和最晚日期

问题描述

当我试图获取 groupby 之后的最早和最晚日期时,我发现 max 结果将在 min 之后附加:

ATR_table.groupby(['USAGEID', 'STAT']).agg({'DATADTTM':'min','DATADTTM':'max'})
使用 ID 统计数据 数据DTTM
10140 0 2020-01-01
10140 1 2020-01-01
10141 0 2020-01-01
10141 1 2020-01-01
10140 0 2020-07-18
10140 1 2020-07-18
10141 0 2020-07-18
10141 1 2020-07-18

有没有办法通过使用 groupby 来获得以下结果?

使用 ID 统计数据 DATADTTM 最小值 DATADTTM 最大值
10140 0 2020-01-01 2020-07-18
10140 1 2020-01-01 2020-07-18
10141 0 2020-01-01 2020-07-18
10141 1 2020-01-01 2020-07-18

标签: pythongroup-byaggregation

解决方案


如果你没有其他列,你可以简单地传递一个简单的列表:

ATR_table.groupby(['USAGEID', 'STAT']).agg(['min', 'max'])

如果您希望能够在其他列上使用其他功能,您应该在字典中包含一个列表:

ATR_table.groupby(['USAGEID', 'STAT']).agg({'DATADTTM':['min', 'max']})

推荐阅读