Python 按两列分组,然后获取最早和最晚日期

Posted

技术标签:

【中文标题】Python 按两列分组,然后获取最早和最晚日期【英文标题】:Python Group by two columns and then get the earliest and latest date 【发布时间】:2021-06-29 10:44:26 【问题描述】:

当我试图获取groupby之后的最早和最晚日期时,我发现max结果会在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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

以上是关于Python 按两列分组,然后获取最早和最晚日期的主要内容,如果未能解决你的问题,请参考以下文章

python按两列分组,按一个索引提取第一个元素

Pandas 数据框:按两列分组,然后对另一列进行平均

按两列排序,为啥不先分组呢?

mysql查询每个直播间每个用户最早进入时间和最晚退出时间

VBA/Excel 中的最早日期为 00:00:00

按两列对 MySQL 表排序