我是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的新手,所以外行人的条款会非常有用;)
答案 0 :(得分:0)
如果你的close_return是一个numpy数组,你可以尝试这样的事情:
mylambda=pd.Series(lambda_calc, name='lambda', index = close_return[:,[1]])
这应该创建一个带有自定义索引的系列(对应于close_return
的第一列。