Pandas中如何计算两列时间差并将结果存入DataFrame新增列
实现方法
你需要先将字符串格式的时间列转换为pandas原生的datetime类型,再做差值计算即可,完整代码如下:
import pandas as pd # 按你数据的时间格式解析两列时间,避免自动解析出错 trades_df['Open Time'] = pd.to_datetime(trades_df['Open Time'], format='%d-%m-%Y %H:%M') trades_df['Close Time'] = pd.to_datetime(trades_df['Close Time'], format='%d-%m-%Y %H:%M') # 计算时间差生成time_spent列 trades_df['time_spent'] = trades_df['Close Time'] - trades_df['Open Time']
处理后你示例里的两行数据对应的time_spent值分别为0 days 00:29:00、11 days 09:11:00,是pandas的timedelta类型,支持直接做时间相关的运算。
如果你需要得到数值型的时长结果,可以用如下方式转换为指定单位:
# 转为总分钟数 trades_df['time_spent_total_min'] = trades_df['time_spent'].dt.total_seconds() / 60 # 转为总小时数 trades_df['time_spent_total_hour'] = trades_df['time_spent'].dt.total_seconds() / 3600
注意:必须手动指定
format='%d-%m-%Y %H:%M'参数,否则pandas自动推断时间格式时,很容易把日-月-年的格式误判为月-日-年,导致时间解析错误。
内容的提问来源于stack exchange,提问作者user18587858
相关产品推荐
相关产品推荐

