如何在Python DataFrame中计算两列时间戳的秒级差值并新增列
计算DataFrame中时间字符串的秒级差值
当然可以完成这个操作,但不能直接对字符串类型的时间列做差值计算,需要先将字符串转换为可计算的时间类型,再进行差值运算。以下是具体实现步骤:
步骤1:准备数据(模拟你的df1)
import pandas as pd # 构造与你描述一致的字符串类型DataFrame df1 = pd.DataFrame({ 'A': ['23:14:25', '23:14:32'], 'B': ['23:16:34', '23:19:44'], 'C': ['90', '91'] })
步骤2:转换时间列并计算秒级差值
如果需要D列存储实际的秒数差值(而非表达式字符串),执行以下代码:
# 将A、B列的字符串转为datetime类型(指定格式为时分秒) df1['A_datetime'] = pd.to_datetime(df1['A'], format='%H:%M:%S') df1['B_datetime'] = pd.to_datetime(df1['B'], format='%H:%M:%S') # 计算时间差并转换为总秒数,存入D列 df1['D'] = (df1['B_datetime'] - df1['A_datetime']).dt.total_seconds() # 移除中间辅助列,得到最终的df2 df2 = df1.drop(['A_datetime', 'B_datetime'], axis=1)
运行后df2的结果为:
A B C D 0 23:14:25 23:16:34 90 129.0 1 23:14:32 23:19:44 91 312.0
可选:如果需要D列存储表达式字符串
如果你的需求是让D列显示(B-A)的表达式格式,直接用字符串拼接即可:
df1['D'] = '(' + df1['B'] + '-' + df1['A'] + ')' df2 = df1.copy()
此时df2的结果完全符合你给出的预期结构:
A B C D 0 23:14:25 23:16:34 90 (23:16:34-23:14:25) 1 23:14:32 23:19:44 91 (23:19:44-23:14:32)
内容的提问来源于stack exchange,提问作者user3555115
相关产品推荐
相关产品推荐

