python 日期 格式转换 英文_量化数据预处理-中文日期(含)转英文日期

1.引入

时间是pandas数据的主要索引。中文网站上下载的数据含有中文日期,其中包含年月日。如下图所示:

沪深300指数的数据含有中文,需要处理成python的 datetime格式才能放入回测框架中. 方法有很多,关键如何优雅的使用pythonic的完成转换,需要考虑。

2.正则表达式提取年月日信息+map函数

用正则表达式提取年月日信息,然后改写成英文格式

def date_transder(my_str ):

pattern = re.compile('(\d+)\D(\d+)\D(\d+)')

dd = pattern.findall(my_str)

date_strr = dd[0][2]+'/'+dd[0][1]+'/'+dd[0][0]

return date_strr

使用map function对索引数据里面的中文日期一一处理。

假设数据块存放在dataframe df 中。 df.index.values极为需要转换的日期。使用map函数实现数据间的映射。

dates = list(df.index.values)

dates = list(map(date_transder, dates))

3.完整代码

import re

import pandas as pd

import os

def date_transder(my_str ):

pattern = re.compile('(\d+)\D(\d+)\D(\d+)')

dd = pattern.findall(my_str)

date_strr = dd[0][2]+'/'+dd[0][1]+'/'+dd[0][0]

return date_strr

path1 = os.path.abspath('.')

csv_dir = 'data_csv'

csv_dir = os.path.join(path1, csv_dir)

s='hs300'

df = pd.read_csv(

os.path.join(csv_dir, '%s.csv' % s),

header=0, index_col=0

)

dates = list(df.index.values)

dates = list(map(date_transder, dates))

df = df.reset_index()

df['date'] = dates

df = df.set_index('date')

df = df.sort_index()

df.to_csv('hs300.csv')

4. 最终结果

重新索引排序过后的数据如下图。

沪深300index 数据下载地址:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值