python - 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 |
解决方案
如果你没有其他列,你可以简单地传递一个简单的列表:
ATR_table.groupby(['USAGEID', 'STAT']).agg(['min', 'max'])
如果您希望能够在其他列上使用其他功能,您应该在字典中包含一个列表:
ATR_table.groupby(['USAGEID', 'STAT']).agg({'DATADTTM':['min', 'max']})