如何计算python数据帧的第一条记录和最后一条记录之间的时间差
我有一个像这样的数据框如何计算python数据帧的第一条记录和最后一条记录之间的时间差,python,pandas,Python,Pandas,我有一个像这样的数据框 ATM ID Ref no Timestamp 1 11 2020/02/01 15:10:23 1 11 2020/02/01 15:11:03 1 111 2020/02/06 17:45:41 1 111 2020/02/06 18:11:03 2 22 2020/02/07 15:11:03 2 22 2020/02/07 15:2
ATM ID Ref no Timestamp
1 11 2020/02/01 15:10:23
1 11 2020/02/01 15:11:03
1 111 2020/02/06 17:45:41
1 111 2020/02/06 18:11:03
2 22 2020/02/07 15:11:03
2 22 2020/02/07 15:25:01
2 22 2020/02/07 15:38:51
2 222 2020/02/07 15:11:03
我想按ATM ID和Ref no对它进行分组,只返回refno和ATM ID组合的1个结果,以及第一个和最后一个Ref no的时间戳之间的持续时间
输出格式
ATM ID Ref no Timestamp Diff
1 11 2020/02/01 15:11:03 00:00:40
1 111 2020/02/06 18:11:03 00:25:22
2 22 2020/02/07 15:38:51 00:27:48
2 222 2020/02/07 15:11:03 00:00:00
在中使用自定义lambda函数,用于“最后一个值与第一个值的差值”:
df1 = (df.groupby(['ATM ID','Ref no'])['Timestamp']
.agg(lambda x: x.iat[-1] - x.iat[0])
.reset_index(name='diff'))
print (df1)
ATM ID Ref no diff
0 1 11 00:00:40
1 1 111 00:25:22
2 2 22 00:27:48
3 2 222 00:00:00
或聚合最后一个
和第一个
并通过以下方式创建新列:
是否可以添加预期输出?已更新预期输出
df1 = (df.groupby(['ATM ID','Ref no'])['Timestamp']
.agg(['last','first'])
.assign(diff = lambda x: x.pop('last') - x.pop('first'))
.reset_index()
)
print (df1)
ATM ID Ref no diff
0 1 11 00:00:40
1 1 111 00:25:22
2 2 22 00:27:48
3 2 222 00:00:00