Pandas根据起止时间差逐分钟生成对应数据行的实现问题
可直接运行的实现代码
import pandas as pd # 读取原始数据 df = pd.read_csv('sample.csv') # 将字符串格式的起止时间转换为pandas datetime类型,方便时间运算 df['Starttime'] = pd.to_datetime(df['Starttime'], format='%H:%M:%S') df['Endtime'] = pd.to_datetime(df['Endtime'], format='%H:%M:%S') # 对每一行生成从起始时间到结束时间、间隔1分钟的连续时间序列 df['time'] = df.apply(lambda row: pd.date_range(start=row['Starttime'], end=row['Endtime'], freq='1min'), axis=1) # 将存储时间序列的列展开为多行,保留对应的Lap字段 result = df.explode('time')[['Lap', 'time']] # 将datetime格式转换为你需要的hh:mm:ss字符串格式 result['time'] = result['time'].dt.strftime('%H:%M:%S') # 可直接输出查看结果,也可以用result.to_csv('output.csv', index=False)保存为文件 print(result)
核心逻辑说明
- 原始csv读取的时间是字符串类型,必须先转换为datetime类型才能进行时间序列运算,指定format参数可以避免自动识别出错,同时提升转换效率
pd.date_range内置支持按指定间隔生成连续时间,设置freq='1min'即可实现1分钟步长,自动包含起止时间,刚好匹配你需要的行数要求explode方法可以直接将单列的列表类数据拆分为多行,无需手动写循环拼接,性能和可读性都更高
内容的提问来源于stack exchange,提问作者panzers
相关产品推荐
相关产品推荐

