我正在尝试使用pandas数据框根据我从TD Ameritrade API中提取的股价数据创建时间序列可视化。为此,我一直试图将数据框datetime
列中的时间戳转换为datetime对象。这样,我可以将datetime列设置为新索引,并使用清晰格式化的x轴进行可视化。
open high low close volume datetime
0 336.89 336.90 336.69 336.77 26232 1599822000000
1 336.90 337.05 336.69 336.92 13180 1599822300000
2 336.98 337.24 336.98 337.23 31810 1599822600000
3 337.01 337.25 337.00 337.15 8749 1599822900000
4 337.10 337.10 336.70 336.70 9664 1599823200000
.. ... ... ... ... ... ...
我尝试通过此thread中的建议来实现这一目标,但没有成功。我也尝试使用以下代码:
df['adj_datetime'] = pd.to_datetime((df['datetime']/1000))
但是,这是结果:
open high ... datetime adj_datetime
0 336.89 336.90 ... 1599822000000 1970-01-01 00:00:01.599822000
1 336.90 337.05 ... 1599822300000 1970-01-01 00:00:01.599822300
2 336.98 337.24 ... 1599822600000 1970-01-01 00:00:01.599822600
3 337.01 337.25 ... 1599822900000 1970-01-01 00:00:01.599822900
4 337.10 337.10 ... 1599823200000 1970-01-01 00:00:01.599823200
.. ... ... ... ... ...
这不是我要查找的结果,因为1.)此数据来自2020-09-11,并且2.)这不是长时间的交易数据,因此12:01 AM是不合适的时间。
任何建议,反馈或其他资源将不胜感激!
答案 0 :(得分:1)
pd.to_datetime中的默认时间单位为纳秒(ns),但是您的datetime
列中的时间戳为毫秒(ms)。
指定参数unit=ms
,以便pd.to_datetime
正确解释时间戳。
>>> pd.to_datetime(1599822000000, unit='ms')
Timestamp('2020-09-11 11:00:00')
还可以使用pd.Timestamp
>>> pd.Timestamp(1599822000000, unit='ms')
Timestamp('2020-09-11 11:00:00')