Python 时间戳数据的循环索引

Python loop indexing on time stamped data

我是 Python 的新手,有一个问题。我正在处理来自雅虎金融的时间戳数据。我在没有执行循环的情况下创建的任何变量,例如 % chg.,returns 原始时间戳仍然完好无损的结果:

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 的新手,所以通俗易懂的术语会非常有用 ;)

如果您的 close_return 是一个 numpy 数组,您可以尝试这样的操作:

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

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