1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python 日期 格式转换 英文_量化数据预处理-中文日期(含)转英文日期

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

时间:2023-08-16 07:09:00

相关推荐

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

1.引入

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

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

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

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

def date_transder(my_str ):

pattern = pile('(\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 = pile('(\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 数据下载地址:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。