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

如何将Tradingview API返回的Pandas DataFrame的Datetime索引转为独立列

问题描述

刚学Python几周,昨晚开始被一个看似简单的问题卡壳了。我通过Tradingview API下载数据并存到Pandas DataFrame里,这个DataFrame有6列,但Datetime数据是索引不是列,想知道怎么把Datetime提取成单独的列。

我的代码如下:

# import lib
from tvDatafeed import TvDatafeed, Interval
# login tradingview api
tv = TvDatafeed()
# download data
us500 = tv.get_hist(symbol='US500',exchange='GLOBALPRIME',
interval=Interval.in_1_minute,n_bars=1000)
# show dataframe
us500

输出结果:

symbol        open    high     low   close  volume
datetime                                                                
2022-09-26 22:54:00  GLOBALPRIME:US500  3653.90  3654.20  3653.70  3654.10    68.0
2022-09-26 22:55:00  GLOBALPRIME:US500  3654.10  3654.40  3653.65  3653.90    87.0
2022-09-26 22:56:00  GLOBALPRIME:US500  3653.95  3654.05  3653.75  3653.90    46.0
2022-09-26 22:57:00  GLOBALPRIME:US500  3653.90  3654.70  3653.90  3654.50    81.0
2022-09-26 22:58:00  GLOBALPRIME:US500  3654.70  3654.95  3653.30  3653.65   107.0
...                                    ...      ...      ...      ...     ...
2022-09-27 16:28:00  GLOBALPRIME:US500  3686.35  3686.50  3682.35  3683.55  1049.0
2022-09-27 16:29:00  GLOBALPRIME:US500  3683.70  3684.80  3681.10  3681.50  1067.0
2022-09-27 16:30:00  GLOBALPRIME:US500  3681.60  3688.35  3681.60  3688.00  1111.0
2022-09-27 16:31:00  GLOBALPRIME:US500  3688.00  3690.35  3686.45  3687.85  1246.0
2022-09-27 16:32:00  GLOBALPRIME:US500  3688.10  3690.75  3688.10  3690.00   139.0

1000 rows × 6 columns
解决方案

有两种简单的方法可以把Datetime索引转为单独的列:

方法1:使用reset_index()

这是最直接的方法,会把索引转为列,同时生成默认的整数索引:

# 将datetime索引转为列,同时重置索引
us500 = us500.reset_index()

执行后,DataFrame会新增一列datetime,原来的datetime索引会被替换成从0开始的整数索引。

方法2:直接赋值列(保留原索引)

如果想保留原来的datetime索引,同时新增一列存储datetime数据,可以直接赋值:

# 新增datetime列,值为原索引
us500['datetime'] = us500.index

操作后,原有的datetime索引不变,DataFrame会多一列datetime存储相同的时间数据。

额外提示

如果转成列后需要调整datetime格式,可以用Pandas的dt属性处理,比如提取日期或时间:

# 提取日期部分
us500['date'] = us500['datetime'].dt.date
# 提取时间部分
us500['time'] = us500['datetime'].dt.time

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:25:39