如何计算Python Pandas数据框中第一条记录和最后一条记录之间的时间差?

3

我可以帮您翻译以下内容。这是一个数据框的样例:

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分组,以返回仅有的一个Ref no和ATM ID组合,以及第一个和最后一个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

你能添加预期输出吗? - jezrael
更新了预期的输出 - yasin mohammed
1个回答

3

GroupBy.agg 中使用自定义 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

或者通过使用 lastfirst 聚合并通过 DataFrame.assign 创建新列:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接