Python 按两列分组,然后得到最早和最晚的日期

Python Group by two columns and then get the earliest and latest date

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

ATR_table.groupby(['USAGEID', 'STAT']).agg({'DATADTTM':'min','DATADTTM':'max'})
USAGEID STAT DATADTTM
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 得到以下结果?

USAGEID STAT DATADTTM Min DATADTTM Max
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']})