Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何转换TD Ameritrade';从API时间戳到日期时间?_Python_Pandas_Dataframe_Datetime_Time Series - Fatal编程技术网

Python 如何转换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

我正试图使用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
..      ...     ...     ...     ...     ...            ...
我试图通过本文中的建议来实现这一点,但没有任何效果。我还尝试使用以下代码:

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
so
pd.to\u datetime
正确解释时间戳

>>> pd.to_datetime(1599822000000, unit='ms')
Timestamp('2020-09-11 11:00:00')
也可以使用

问题 中的默认时间单位为纳秒(ns),但您的
datetime
列的时间戳为毫秒(ms)

解决方案 指定参数
unit=ms
so
pd.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。