猿问

根据时间戳获取第一行和最后一行

所以基本上我试图根据时间戳获取某个人的第一行和最后一行。以下是样本数据


DATE        TIME             NAME       PAUSE CODE

2020-09-01  17:05:34         Name 1     LOGIN

2020-09-01  15:30:21         Name 1     LOGIN

2020-09-01  09:01:16         Name 1     LOGIN

2020-09-01  18:03:55         Name 2     LOGIN

2020-09-01  17:03:55         Name 2     LOGIN

2020-09-01  13:03:55         Name 2     LOGIN

2020-09-01  11:03:55         Name 2     LOGIN

2020-09-01  10:25:14         Name 2     LOGIN

对于上面的例子,预期结果如下


DATE           NAME       TIME1            TIME2

2020-09-01     Name 1     09:01:16         17:05:34

2020-09-01     Name 2     10:25:14         18:03:55

不知道如何在 Pandas 中执行此操作。希望有人能阐明这一点。


慕容森
浏览 110回答 1
1回答

慕慕森

你可以做这样的事情来得到你的结果df = pd.DataFrame(df.groupby(['DATE','NAME'])                    .agg({'TIME':['min','max']})                    .rename(columns={'min':'TIME1','max':'TIME2'})).reset_index()print (df)或者:df = (df.groupby(['DATE','NAME'])                    .agg({'TIME':['min','max']})                    .rename(columns={'min':'TIME1','max':'TIME2'})).reset_index()print (df)这将导致         DATE    NAME      TIME                                    TIME1     TIME20  2020-09-01  Name 1  09:01:16  17:05:341  2020-09-01  Name 2  10:25:14  18:03:55您还可以按如下方式完成相同的操作:df = df.groupby(['DATE','NAME']).agg(TIME1=pd.NamedAgg(column='TIME', aggfunc='min'),                            TIME2=pd.NamedAgg(column='TIME', aggfunc='max'))print (df)输出将是:                      TIME1     TIME2DATE       NAME                      2020-09-01 Name 1  09:01:16  17:05:34           Name 2  10:25:14  18:03:55
随时随地看视频慕课网APP

相关分类

Python
我要回答