如何在Pandas时序DataFrame中按分组计算累计耗时(分钟)
Pandas按分组计算累计耗时(分钟)
需求:对示例DataFrame按name字段分组,分别计算每组内从第一条记录开始的累计耗时,单位为分钟。
示例输入DataFrame:
import pandas as pd data = pd.DataFrame( { "name": ["foo", "foo", "foo", "bar", "bar", "bar"], "time": [ pd.to_datetime("2021-06-01 00:00:00"), pd.to_datetime("2021-06-01 00:15:00"), pd.to_datetime("2021-06-01 00:30:00"), pd.to_datetime("2021-06-01 00:00:00"), pd.to_datetime("2021-06-01 01:00:00"), pd.to_datetime("2021-06-01 01:30:00"), ], } )
解决方法
通过groupby按name分组后,对每组的time列计算与组内第一条时间的差值,再将差值转换为分钟数:
# 新增累计耗时列 data['elapsed_min'] = data.groupby('name')['time'].apply( lambda x: (x - x.iloc[0]).dt.total_seconds() // 60 ).astype(int)
预期输出
name time elapsed_min 0 foo 2021-06-01 00:00:00 0 1 foo 2021-06-01 00:15:00 15 2 foo 2021-06-01 00:30:00 30 3 bar 2021-06-01 00:00:00 0 4 bar 2021-06-01 01:00:00 60 5 bar 2021-06-01 01:30:00 90
内容的提问来源于stack exchange,提问作者Manan Gajjar
相关产品推荐
相关产品推荐

