一位朋友寄给我一本Jupyter笔记本,上面有以下代码:
for stock_df, allo in zip((aapl, cisco, ibm, amzn), [.3,.2,.4,.1]):
stock_df['Allocation'] = stock_df['NormedReturn']*allo
我理解输出,因为它在每个数据帧“aapl”、“cisco”中创建了一个新列“Allocation”。。。并将权重应用于标准回报。但是,我对语法理解不够,我不能自己再做一遍。你知道吗
2个元素上的for循环和zip如何工作?(我认为压缩时元素的长度必须相似,否则输出数据将被截断)。你知道吗
这看起来像是一种投资组合多样化的代码。aapl、cisco、ibm和amzn是至少包含NormedReturn字段的数据帧。你知道吗
数据帧也可以包含单个值,比如'NormedReturn':[13],没问题。你知道吗
拉链功能可将可折叠物品拉到一起。它将给定的分配权重分配给这些收益;将.3权重分配给aapl股票,将.2权重分配给cisco股票,等等:
提供股票收益和相应的分配权重:
最后,分配将返回序列乘以分配权重:
给出您的分配,即返回*权重系列:
我认为在这之后,你的朋友必须把所有的标准回报和分配放在一起,就像你的最终投资组合回报。你知道吗
Python语法的关键是^{} 函数。你知道吗
从文件中,我们可以看到:
因此,它是通过iterables和'拉链'他们在一起。举例来说,这可能更容易看出:
因此,在您的代码中,这是与一个名为“tuple unpacking”的方法一起使用的,该方法的作用如下:
这允许干净的代码遍历从
zip()
返回的元组。如果您仍然不确定循环在做什么,我们可以将其修改为print
变量(为简单起见,我还将传递到zip
的变量转换为字符串):你可以从输出中看到我们所期望的:
我希望这能帮你清理代码,从你问这个问题的方式来看,你已经知道这些变量实际上是如何在循环中被处理的,所以我就不谈了。你知道吗
相关问题 更多 >
编程相关推荐