如何计算Pandas datetime列的累计时长并新增秒级时长列
如何在Pandas中计算时间列的累计时长(秒为单位)
嘿,我来帮你搞定这个需求!你已经成功把time列转换成了datetime类型,接下来新增累计时长列其实很简单,这里有两种实用的方法:
方法一:直接与起始时间做差
这种方法最直观,每条记录的时间减去第一条记录的时间,再把时间差转换成总秒数即可:
import pandas as pd # 初始化你的DataFrame df = pd.DataFrame ({'time': ['2014-05-01 18:47:05', '2014-05-01 18:47:06', '2014-05-02 18:47:08', '2014-05-02 18:47:10', '2014-05-02 18:47:11']}) df['time'] = pd.to_datetime(df['time']) # 计算累计时长(秒) df['duration'] = (df['time'] - df['time'].iloc[0]).dt.total_seconds()
运行后你会得到想要的结果:
time duration 0 2014-05-01 18:47:05 0.0 1 2014-05-01 18:47:06 1.0 2 2014-05-02 18:47:08 86403.0 3 2014-05-02 18:47:10 86405.0 4 2014-05-02 18:47:11 86406.0
方法二:相邻时间差累加
如果你更倾向于通过计算相邻记录的时间差再累加,也可以这么做:
# 先计算相邻时间差,再填充第一条的空值(0),最后累加 df['duration'] = df['time'].diff().dt.total_seconds().fillna(0).cumsum()
这个方法得到的结果和第一种完全一致,适合需要灵活调整起始逻辑的场景。
小提示
dt.total_seconds()会自动把天、小时、分钟等时间单位全部转换成秒,不用你手动换算,非常方便!
内容的提问来源于stack exchange,提问作者Liam deBoeuf
相关产品推荐
相关产品推荐

