【发布时间】:2021-04-05 19:36:58
【问题描述】:
我有一个如图所示的数据框:
我必须将数据框的 Close 列标准化如下:
-
对于每个交易品种,我们必须将随后几天的收盘价除以第一个收盘价。这意味着 APLAPOLLO 在 2020 年 11 月 24 日的标准化收盘价将计算为:
Normalised_Close_price=(2020 年 11 月 24 日收盘)/(2020 年 11 月 23 日收盘)=0.9915(仅对 Aplapollo 有效)
-
现在,如果符号发生变化,方法保持不变,只有上述公式中的值会发生变化。因此,对于 AUBANK,2020 年 11 月 24 日的标准化收盘将计算为:
Normalised_Close_price=(2020 年 11 月 24 日收盘)/(2020 年 11 月 23 日收盘)=0.9915(仅对 AUBANK 有效)
-
其他交易品种的标准化收盘价应以相同方式计算。
因此,计算后数据框应如下所示:
例如:对于上述解释中的 Aplapollo:
- 24/11/2020=(3219.95/3247.45)=0.991532 的标准化值
- 2020 年 11 月 25 日的标准化值=(2020 年 11 月 25 日收盘)/(2020 年 11 月 23 日收盘)=0.991686
- 2020 年 11 月 26 日的标准化值=(2020 年 11 月 26 日收盘)/(2020 年 11 月 23 日收盘)=0.978907
其他符号也是如此
我在规范化数据框列时参考了以下答案:
Normalize columns of pandas data frame
这无济于事,因为值会根据我的情况而变化
【问题讨论】:
-
您的解释和您的标准化数据框略有不同。
Normalised_Close_price=(Close on 24/11/2020)/(Close on 23/11/2020)=0.9915( Valid Only For Aplapollo)2020 年 11 月 24 日 APLAPOLLO 的标准化值在 datafrmae 中为 1.000155。我错过了什么吗? -
你能举出单组前三个计算的例子吗?
-
@mmrbulbul 不,你没有错过我错误发布的任何内容
-
@pygirl 添加了示例
-
如果你想用 1 填充,那么使用
.fillna(1)-->df1.groupby('Symbol')['Close'].transform(lambda x: x/x.shift(1)).fillna(1)