如何将rdat/rdata xts文件转换为python本机时间序列文件?
我有一个文件夹,里面有1000多个股票数据的rda时间序列文件。下面是我在rda中保存时间序列(xts)文件时使用的示例代码。我使用rda/rdata而不是csv,因为文件的保存和加载速度很快,rda中的数据压缩也比csv好如何将rdat/rdata xts文件转换为python本机时间序列文件?,python,r,pandas,xts,rda,Python,R,Pandas,Xts,Rda,我有一个文件夹,里面有1000多个股票数据的rda时间序列文件。下面是我在rda中保存时间序列(xts)文件时使用的示例代码。我使用rda/rdata而不是csv,因为文件的保存和加载速度很快,rda中的数据压缩也比csv好 library(quantmod) AAPL <- getSymbols("AAPL",auto.assign=FALSE) save(AAPL,file="/home/user/folder/AAPL.rda") AAPL.Open AAPL
library(quantmod)
AAPL <- getSymbols("AAPL",auto.assign=FALSE)
save(AAPL,file="/home/user/folder/AAPL.rda")
AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
2007-01-03 86.29 86.58 81.90 83.80 309579900 10.96015
2007-01-04 84.05 85.95 83.82 85.66 211815100 11.20341
2007-01-05 85.77 86.20 84.40 85.05 208685400 11.12363
2007-01-08 85.96 86.53 85.28 85.47 199276700 11.17857
2007-01-09 86.45 92.98 85.15 92.57 837324600 12.10717
2007-01-10 94.75 97.80 93.45 97.00 738220000 12.68657
输出是
AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
1.0 86.289999 86.579999 81.899999 83.800002 309579900.0 10.960147
2.0 84.050001 85.949998 83.820003 85.659998 211815100.0 11.203415
3.0 85.770000 86.199997 84.400002 85.049997 208685400.0 11.123633
4.0 85.959998 86.529998 85.280003 85.470000 199276700.0 11.178565
5.0 86.450003 92.979999 85.150000 92.570003 837324600.0 12.107169
它将其转换为python中的非时间序列数据集。如何将其转换为时间序列
编辑2:
经过多次搜索和修补,我已经走到了这一步。我试图将rda文件中的UTC变量转换为本地时间
import rpy2.robjects as robjects
import pandas.rpy.common as com
import pandas as pd
import numpy as np
robj=robjects.r['load']("AAPL.rda")
myRData=None
for sets in robj:
myRData = com.load_data(sets)
# convert to DataFrame
if not isinstance(myRData, pd.DataFrame):
myRData = pd.DataFrame(myRData)
myRData.head(10)
ts=np.array(robjects.r('attr(AAPL,"index")')).astype(int)
#changing index
myRData.index=pd.to_datetime(ts, utc=True, format='%Y-%m-%d')
myRData.tail(10)
现在的问题是转换的本地时间索引格式不正确。尾部应该包含最近日期的时间序列,而不是停留在1970年
AAPL.Close AAPL.Volume AAPL.Adjusted
1970-01-01 00:00:01.476144+00:00 116.300003 64041000.0 116.300003
1970-01-01 00:00:01.476230400+00:00 117.339996 37586800.0 117.339996
1970-01-01 00:00:01.476316800+00:00 116.980003 35192400.0 116.980003
1970-01-01 00:00:01.476403200+00:00 117.629997 35652200.0 117.629997
1970-01-01 00:00:01.476662400+00:00 117.550003 23624900.0 117.550003
1970-01-01 00:00:01.476748800+00:00 117.470001 24553500.0 117.470001
1970-01-01 00:00:01.476835200+00:00 117.120003 20034600.0 117.120003
1970-01-01 00:00:01.476921600+00:00 117.059998 24125800.0 117.059998
1970-01-01 00:00:01.477008+00:00 116.599998 23192700.0 116.599998
1970-01-01 00:00:01.477267200+00:00 117.650002 23311700.0 117.650002
经过数小时的编辑和搜索。我通过生成的代码解决了我的问题。欢迎任何建议
import rpy2.robjects as robjects
import pandas.rpy.common as com
import pandas as pd
import numpy as np
from datetime import datetime
#loading external rda file
robj=robjects.r['load']("AAPL.rda")
myRData=None
for sets in robj:
myRData = com.load_data(sets)
# convert to DataFrame
if not isinstance(myRData, pd.DataFrame):
myRData = pd.DataFrame(myRData)
myRData.tail(10)
#fetching UTC data from rda file
ts=np.array(robjects.r('attr(AAPL,"index")')).astype(int)
#converting UTC to local time
d= np.array([])
for t in ts:
s=datetime.utcfromtimestamp(t)
d=np.append(s,d)
#sorting datetime
d=np.sort(d, axis=0)
#changing index
myRData.index=pd.to_datetime(d)
myRData.tail(10)
结果
AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume \
2016-10-11 117.699997 118.690002 116.199997 116.300003 64041000.0
2016-10-12 117.349998 117.980003 116.750000 117.339996 37586800.0
2016-10-13 116.790001 117.440002 115.720001 116.980003 35192400.0
2016-10-14 117.879997 118.169998 117.129997 117.629997 35652200.0
2016-10-17 117.330002 117.839996 116.779999 117.550003 23624900.0
2016-10-18 118.180000 118.209999 117.449997 117.470001 24553500.0
2016-10-19 117.250000 117.760002 113.800003 117.120003 20034600.0
2016-10-20 116.860001 117.379997 116.330002 117.059998 24125800.0
2016-10-21 116.809998 116.910004 116.279999 116.599998 23192700.0
2016-10-24 117.099998 117.739998 117.000000 117.650002 23311700.0
你试过这个吗?
AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume \
2016-10-11 117.699997 118.690002 116.199997 116.300003 64041000.0
2016-10-12 117.349998 117.980003 116.750000 117.339996 37586800.0
2016-10-13 116.790001 117.440002 115.720001 116.980003 35192400.0
2016-10-14 117.879997 118.169998 117.129997 117.629997 35652200.0
2016-10-17 117.330002 117.839996 116.779999 117.550003 23624900.0
2016-10-18 118.180000 118.209999 117.449997 117.470001 24553500.0
2016-10-19 117.250000 117.760002 113.800003 117.120003 20034600.0
2016-10-20 116.860001 117.379997 116.330002 117.059998 24125800.0
2016-10-21 116.809998 116.910004 116.279999 116.599998 23192700.0
2016-10-24 117.099998 117.739998 117.000000 117.650002 23311700.0