Python 如何转换TD Ameritrade';从API时间戳到日期时间?
我正试图使用pandas数据框从我从TD Ameritrade的API中提取的股价数据创建一个时间序列可视化。为了做到这一点,我一直在尝试将数据帧的Python 如何转换TD Ameritrade';从API时间戳到日期时间?,python,pandas,dataframe,datetime,time-series,Python,Pandas,Dataframe,Datetime,Time Series,我正试图使用pandas数据框从我从TD Ameritrade的API中提取的股价数据创建一个时间序列可视化。为了做到这一点,我一直在尝试将数据帧的datetime列中的时间戳转换为datetime对象。通过这种方式,我可以将datetime列设置为新索引,并使用格式清晰的x轴进行可视化 open high low close volume datetime 0 336.89 336.90 336.69 336.77 26232 1
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
.. ... ... ... ... ... ...
我试图通过本文中的建议来实现这一点,但没有任何效果。我还尝试使用以下代码:
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不是合适的时间
任何建议、反馈或额外资源都将不胜感激 问题
中的默认时间单位为纳秒(ns),但您的datetime
列的时间戳为毫秒(ms)
解决方案
指定参数unit=ms
sopd.to\u datetime
正确解释时间戳
>>> pd.to_datetime(1599822000000, unit='ms')
Timestamp('2020-09-11 11:00:00')
也可以使用
问题
中的默认时间单位为纳秒(ns),但您的datetime
列的时间戳为毫秒(ms)
解决方案
指定参数unit=ms
sopd.to\u datetime
正确解释时间戳
>>> pd.to_datetime(1599822000000, unit='ms')
Timestamp('2020-09-11 11:00:00')
也可以使用
这些看起来像Javascript时间戳(自1970-01-01T00:00:00 UTC以来的毫秒)。但是所有的时间都是以1000秒为单位取整的,这真的很奇怪。询问提供您的数据的人。无论如何,您可能需要将这些转换为正确的时区;它们可能是UTC格式的,看起来像Javascript时间戳(从1970-01-01T00:00:00 UTC开始的毫秒)。但是所有的时间都是以1000秒为单位取整的,这真的很奇怪。询问提供您的数据的人。无论如何,您可能需要将这些转换为正确的时区;他们可能在UTC。