如何将DataFrame中的时间日志(时间戳)转换为整数秒?
解决方案
单个datetime.time对象转整数秒
你已经得到了datetime.time对象,直接通过其属性计算总秒数即可:
from datetime import datetime datetime_str = '00:00:26' datetime_object = datetime.strptime(datetime_str, '%H:%M:%S').time() # 计算总秒数 total_seconds = datetime_object.hour * 3600 + datetime_object.minute * 60 + datetime_object.second print(total_seconds) # 输出: 26 print(type(total_seconds)) # 输出: <class 'int'>
DataFrame批量转换(更高效)
既然要处理整个DataFrame的列,没必要先转成datetime.time对象,直接用pandas的内置方法批量处理,效率更高:
import pandas as pd # 示例DataFrame df = pd.DataFrame({ 'Text': ['A', 'B'], 'Start time': ['00:00:26', '00:01:27'], 'End time': ['00:02:10', '00:03:05'] }) # 将Start time和End time转为整数秒 df['Start time'] = pd.to_datetime(df['Start time'], format='%H:%M:%S').dt.total_seconds().astype(int) df['End time'] = pd.to_datetime(df['End time'], format='%H:%M:%S').dt.total_seconds().astype(int) print(df)
输出结果:
Text Start time End time 0 A 26 130 1 B 87 185
另一种字符串直接计算的方法
如果不想用datetime模块,也可以直接拆分字符串计算:
time_str = '00:01:27' h, m, s = map(int, time_str.split(':')) total_seconds = h * 3600 + m * 60 + s print(total_seconds) # 输出: 87
内容的提问来源于stack exchange,提问作者CodeBunnyღ
相关产品推荐
相关产品推荐

