【发布时间】:2019-01-31 07:57:57
【问题描述】:
我有一些从 API 中提取的数据,日期格式如下:'1522454400000'
不知道如何解析它,但这是我所拥有的(尝试失败)
df = DataFrame(test)
df.columns = ['Date', 'Open', 'High', 'Low', 'Close', 'Volume']
df.set_index('Date')
df.index = pd.to_datetime(df.index, unit = 'd')
其中变量test 是基础数据的列表。这会错误地将数据解析为 1970 年。
解析结果:
1970-01-01 00:00:00.000000000
有什么想法吗?
********************** 编辑 ************************ ************
Python 版本:3
熊猫版。 0.23.0
这是一个可重复性的工作示例。但首先,这是我发现的事实。
日期格式:自 1970 年 1 月 1 日以来的 64 位 Unix 时间戳,以毫秒为单位
时区:UTC
我的时区:UTC + 4(所需的日期时间索引)
代码:
import bitmex
import pandas as pd
from pandas import DataFrame
import datetime
import ccxt
api_connector = ccxt.bitmex({
'enableRateLimit': True
})
#get OHLCV Data
testdata = api_connector.fetch_ohlcv('XBTZ18', '1h')
df2 = DataFrame(testdata)
df2.columns = ['Date', 'Open', 'High', 'Low', 'Close', 'Volume']
#df2.set_index('Date')
df2.index = pd.to_datetime(df2.Date, unit='ms')
df3 = df2.drop(['Date'],
axis =1)
df3.tail()
这会返回:
Open High Low Close Volume
Date
2018-07-06 00:00:00 6538.5 6555.0 6532.5 6537.0 176836
2018-07-06 01:00:00 6537.0 6535.5 6520.5 6524.5 139735
2018-07-06 02:00:00 6524.5 6542.5 6525.5 6542.5 59759
2018-07-06 03:00:00 6542.5 6545.0 6538.0 6538.0 121410
2018-07-06 04:00:00 6538.0 6538.5 6477.5 6525.0 764125
关闭!但没有雪茄。今天的日期是 2018 年 8 月 31 日,所以我至少希望它在正确的月份。
伙计们,我做错了什么?
【问题讨论】:
-
imo 1970 年的事情与 UNIX 系统上的时代(1970 年 1 月 1 日)有关。我的猜测是,解析中的错误只会给你时代,而不是之间的时间。来源:wiki.python.org/moin/WorkingWithTime
-
如果您知道 1970 年是不正确的,那么大概您知道什么是正确的,或者至少是大致的,所以您应该将这些信息放在问题中。因为您碰巧选择了最近的一个时间,格式非常接近我们中的一些人每天都必须盯着的熟悉的格式,并且正在寻找 UTC 午夜时间戳,所以您很幸运,我们中的一些人认出了它很快,但一般来说,你不应该那样依赖运气,否则你通常不会得到答案。
-
谢谢大家。我对时间框架有一种感觉,并且确实知道 1970 年已经过去了。我也知道这是一个每日时间序列(因为拉取数据的函数有一个参数)。但是我无法解析日期并将其设置为我的索引以及此处的响应。会继续努力
-
我不知道您的数据源是什么,但您确定 (a) 它设置了正确的日期,并且 (b) 它为您提供了当前数据?
标签: python pandas datetime datetime-format ccxt