You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将CSV日期时间自动转换为UNIX时间戳适配回测代码

修改方案

你的核心需求是将CSV中YYYY-MM-DD HH:MM:SS格式的时间字符串转换为毫秒级UNIX时间戳(如1512045180000),同时保留原代码的时间范围筛选逻辑。以下是具体修改:

修改后的完整代码

from datetime import datetime
from dateutil.parser import parse
import os
import pandas as pd

def getEthereumData(start_date, end_date):
    print("Start reading ethereum data..")
    path = os.path.dirname(os.path.abspath(__file__))
    data = pd.read_csv(path + "\\data\\BTCUSDT-1m-data.csv")
    
    # 关键修改:将字符串时间转换为毫秒级UNIX时间戳
    # 1. 把CSV中的时间字符串解析为datetime对象
    data['DateTime'] = pd.to_datetime(data['Timestamp'], format='%Y-%m-%d %H:%M:%S')
    # 2. 将datetime对象转换为毫秒级UNIX时间戳(pandas的datetime转int64是纳秒,除以1e6得到毫秒)
    data['Timestamp'] = data['DateTime'].astype('int64') // 10**6
    
    data = data.set_index('DateTime')
    data = data.dropna()
    data = data[parse(start_date): parse(end_date)]
    print("Reading complete")

    return data

关键修改说明

  • 时间字符串转datetime:使用pd.to_datetime()并指定格式%Y-%m-%d %H:%M:%S,确保快速且准确解析CSV中的时间字符串(如果CSV时间格式有变动,只需调整format参数)。
  • datetime转毫秒级时间戳:pandas的datetime对象转为int64类型时得到的是纳秒数,除以10**6即可转换为毫秒级时间戳,符合你需要的格式。
  • 保留原逻辑:后续的索引设置、空值处理、时间范围筛选逻辑均保留,保证回测代码的原有流程不受影响。

注意事项

如果CSV中存储时间的列名不是Timestamp,请将代码中的data['Timestamp']替换为实际列名(比如data['Time']或data['Date'])。

内容的提问来源于stack exchange,提问作者MOUSA HAZZAZI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 09:30:30