gpt4 book ai didi

python - 解释一些Python代码。访问不存在的列?

转载 作者:行者123 更新时间:2023-12-01 04:50:47 25 4
gpt4 key购买 nike

代码来源在这里:https://github.com/quantopian/zipline/blob/master/zipline/examples/pairtrade.py

代码块是这样的:

def ols_transform(data, sid1, sid2):
"""Computes regression coefficient (slope and intercept)
via Ordinary Least Squares between two SIDs.
"""
p0 = data.price[sid1]
p1 = sm.add_constant(data.price[sid2], prepend=True)
slope, intercept = sm.OLS(p0, p1).fit().params

return slope, intercept

数据框“data”是由此创建的:

data = load_from_yahoo(stocks=['PEP', 'KO'], indexes={},
start=start, end=end)

并且输出如下:

                          PEP     KO
Date
2001-01-02 00:00:00+00:00 15.25 9.20
2001-01-03 00:00:00+00:00 16.19 9.54
2001-01-04 00:00:00+00:00 16.55 9.72
2001-01-05 00:00:00+00:00 16.29 9.67
2001-01-08 00:00:00+00:00 16.09 9.79
2001-01-09 00:00:00+00:00 15.74 9.70
2001-01-10 00:00:00+00:00 15.74 9.61
2001-01-11 00:00:00+00:00 15.80 9.88

我的问题是,这是如何工作的?

   p0 = data.price[sid1]:
p1 = sm.add_constant(data.price[sid2], prepend=True)

在最后的代码块中,“价格”未定义为列。我不确定为什么可以调用它?它甚至不是数据框的名称。

是否与导入的包有关?或者我完全错过了一些东西?

最佳答案

这是由于函数的前一行 (@batchtransform): https://github.com/quantopian/zipline/blob/master/zipline/examples/pairtrade.py#L28这有一些魔力。有关其工作原理的更完整说明,请参阅 Quantopian 帮助文档 https://www.quantopian.com/help在“批量转换”下。

但是,请注意,这是一个旧示例,已被重构以使用较新的 History() ,它实现了相同但更快、更干净的效果。帮助文档也包含相关描述。

关于python - 解释一些Python代码。访问不存在的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28523535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com