为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕容森 2023-08-08 15:36:38
所以基本上我试图根据时间戳获取某个人的第一行和最后一行。以下是样本数据DATE        TIME             NAME       PAUSE CODE2020-09-01  17:05:34         Name 1     LOGIN2020-09-01  15:30:21         Name 1     LOGIN2020-09-01  09:01:16         Name 1     LOGIN2020-09-01  18:03:55         Name 2     LOGIN2020-09-01  17:03:55         Name 2     LOGIN2020-09-01  13:03:55         Name 2     LOGIN2020-09-01  11:03:55         Name 2     LOGIN2020-09-01  10:25:14         Name 2     LOGIN对于上面的例子,预期结果如下DATE           NAME       TIME1            TIME22020-09-01     Name 1     09:01:16         17:05:342020-09-01     Name 2     10:25:14         18:03:55不知道如何在 Pandas 中执行此操作。希望有人能阐明这一点。
查看完整描述

1 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

你可以做这样的事情来得到你的结果


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     TIME2

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

1  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     TIME2

DATE       NAME                      

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

           Name 2  10:25:14  18:03:55


查看完整回答
反对 回复 2023-08-08
  • 1 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信