Python新手求助:为数值数据集添加按秒递增的连续时间戳
为数值数据集添加逐秒递增时间戳的Python实现方法
方法一:用Python标准库datetime实现(适合小数据集,易理解)
- 把数值数据整理成列表,或从文件读取(假设数据存在
data.txt,每行一个数值) - 借助
datetime模块生成逐秒递增的时间,和数值配对输出或写入文件。
示例代码:
from datetime import datetime, timedelta # 从文件读取数据,过滤空行并转为浮点数 with open('data.txt', 'r') as f: values = [float(line.strip()) for line in f if line.strip()] # 定义起始时间 start_time = datetime(2012, 12, 1, 0, 0, 0) # 遍历生成带时间戳的结果并打印 for idx, val in enumerate(values): current_time = start_time + timedelta(seconds=idx) print(f"{current_time.strftime('%Y-%m-%d %H:%M:%S')} {val}") # 若要写入新文件,执行以下代码 with open('output.txt', 'w') as f: for idx, val in enumerate(values): current_time = start_time + timedelta(seconds=idx) f.write(f"{current_time.strftime('%Y-%m-%d %H:%M:%S')} {val}\n")
方法二:用pandas实现(适合大数据量,更高效)
如果数据集规模大,用pandas处理会更简洁快速:
- 先安装pandas(未安装则执行
pip install pandas) - 读取数据后生成时间序列,合并后输出或保存。
示例代码:
import pandas as pd # 读取数据,指定列名 df = pd.read_csv('data.txt', header=None, names=['value']) # 生成从起始时间开始的逐秒时间序列,长度和数据一致 start_time = '2012-12-01 00:00:00' time_index = pd.date_range(start=start_time, periods=len(df), freq='S') # 添加时间戳列并调整顺序 df['timestamp'] = time_index df = df[['timestamp', 'value']] # 打印结果(不显示索引和表头) print(df.to_string(index=False, header=False)) # 保存到文件,用空格分隔 df.to_csv('output_pandas.txt', sep=' ', index=False, header=False)
说明
- 新手可以先从第一种方法入手,理解时间递增的逻辑;数据量较大时优先选第二种方法。
- 代码已做简单的空行过滤,确保只处理有效数值行。
内容的提问来源于stack exchange,提问作者pranjal
相关产品推荐
相关产品推荐

