Pandas同列分层多级索引场景下如何实现组内时间差delta_t计算
实现代码
- 首先确保
time列是datetime格式,否则无法计算时间差值
import pandas as pd df['time'] = pd.to_datetime(df['time'])
- 按会话维度分组计算递推时间差,这里直接用索引中的
sess_id作为分组依据
# 按sess_id分组,每行取后一行时间减当前行时间 df['delta_t'] = df.groupby(level='sess_id')['time'].shift(-1) - df['time'] # 如果需要输出数值格式的秒级差值,可以用下面这行代替上面的 # df['delta_t'] = (df.groupby(level='sess_id')['time'].shift(-1) - df['time']).dt.total_seconds()
- 将会话最后一行的空值替换为占位符
-
df['delta_t'] = df['delta_t'].fillna('-')
如果你的多级索引顺序是sess_id在第0位,也可以把level='sess_id'替换为level=0,运行效果完全一致。
内容的提问来源于stack exchange,提问作者S44
相关产品推荐
相关产品推荐

