Python循环索引时间戳数据

时间:2015-01-05 22:48:39

标签: python loops timestamp time-series

我是Python的新手并且有一个问题。我正在使用来自雅虎财经的时间戳数据。我创建的没有执行循环的任何变量(例如% chg.)都会返回原始时间戳保持不变的结果:

close_return = close_price.pct_change()
output:
2014-12-18 -0.028116
...
Name: close, Length: 2199

但是,一旦我通过for循环放置此结果,时间戳索引将替换为默认索引(0,1,2,n,...)。

my_lambda=.94
weight=0
lambda_calc=[]
    for i in log_sq_series[::-1]:
        if i == log_sq_series[-1]:
            weight=1-my_lambda
            lambda_calc.append(weight)
        else:
            weight=weight*my_lambda
            lambda_calc.append(weight)
mylambda=pd.Series(lambda_calc, name='lambda')
mylambda
output:
0     0.060000
1     0.056400
etc...
Name: lambda, Length: 2199, dtype: float64 

当我对具有两个不同索引的两个变量执行算术运算时,这对我来说成了一个问题。见下文:

somevariable=mylambda*close_return
somevariable
output:
2006-04-10   NaN
2006-04-11   NaN
...
2184   NaN
2185   NaN
Length: 4398, dtype: float64

正如您所看到的,#行加倍(2199表示时间戳,2199作为默认索引)因为Python正在处理两个不同的索引(我认为?)。有没有人有办法解决吗?再说一次,我是Python的新手,所以外行人的条款会非常有用;)

1 个答案:

答案 0 :(得分:0)

如果你的close_return是一个numpy数组,你可以尝试这样的事情:

mylambda=pd.Series(lambda_calc, name='lambda', index = close_return[:,[1]])

这应该创建一个带有自定义索引的系列(对应于close_return的第一列。