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']})
当我试图在 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']})