一个Pandas索引生成的小问题

今天遇到一个Pandas索引生成的问题,需要根据股票日频数据生成1分钟间隔的index,想了3个方法来生成:

方法1: 如果有1分钟bar数据的话可以直接读取数据获取index值,可惜没有哈

方法2: pandas.date_range,这个方法可以生成一个时间序列,设置参数freq=‘1min’ ,但是这样生成的结果包含了非交易时间段的数据,运行试了下速度也比较慢。

方法3: 两个list循环,第一个list是日期数据,第二个list是交易时间段的1分钟间隔数据,这个办法虽然笨点但是运行速度还挺快的,具体方法如下:

import itertools

import tushare as ts
import pandas as pd

pro = ts.pro_api()
df = ts.pro_bar(ts_code='000001.SZ', adj='hfq', start_date='20200101', end_date='20201209')
df.index = pd.to_datetime(df['trade_date'])
df.sort_index(inplace=True)

times = [d.strftime('%H:%M:%S') for d in
         pd.date_range('09:30:00', '11:30:00', closed='right', freq=('{}min'.format(1)))] + [
            d.strftime('%H:%M:%S') if d.strftime('%H:%M:%S') != '13:00:00' else '11:30:00' for d in
            pd.date_range('13:00:00', '15:00:00', closed='right', freq=('{}min'.format(1)))]

tmp = [str(item[0])[:10] + ' ' + item[1] for item in itertools.product(list(df.index), times)]
min1_index = pd.to_datetime(tmp)
print(min1_index)

输出结果如下:

DatetimeIndex(['2020-01-02 09:31:00', '2020-01-02 09:32:00',
               '2020-01-02 09:33:00', '2020-01-02 09:34:00',
               '2020-01-02 09:35:00', '2020-01-02 09:36:00',
               '2020-01-02 09:37:00', '2020-01-02 09:38:00',
               '2020-01-02 09:39:00', '2020-01-02 09:40:00',
               ...
               '2020-12-09 14:51:00', '2020-12-09 14:52:00',
               '2020-12-09 14:53:00', '2020-12-09 14:54:00',
               '2020-12-09 14:55:00', '2020-12-09 14:56:00',
               '2020-12-09 14:57:00', '2020-12-09 14:58:00',
               '2020-12-09 14:59:00', '2020-12-09 15:00:00'],
              dtype='datetime64[ns]', length=54480, freq=None)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值