我有一个数据框,如图所示:
我必须将数据框的关闭列规范化如下:
>
对于每个符号,我们必须将随后几天的收盘价除以第一个收盘价。这意味着2020年11月24日APLO的正常化关闭时间将计算为:
标准化收盘价=(2020年11月24日收盘)/(2020年11月23日收盘)=0.9915(仅适用于APLO)
现在,如果符号改变,方法保持不变,只有上述公式中的值改变。因此,对于AUBANK而言,2020年11月24日的正常化结算将计算为:
标准化收盘价=(2020年11月24日收盘)/(2020年11月23日收盘)=0.9915(仅适用于AUBANK)
其他符号的标准化收盘价应以相同方式计算。
因此,在计算后,数据帧应如图所示:
例如:对于阿波罗,从上面的解释:
类似地,其他符号也是如此
关于数据框列的规范化,我参考了以下答案:
规范化熊猫数据框架的列
这没有帮助,因为在我的情况下,值会根据条件而变化
我想你要找的是这个。
df["Normalise"] = df.groupby('Symbol', sort=False)['Close'].rolling(2).apply(lambda x: x.iloc[1] / x.iloc[0]).reset_index(0, drop=True)
尝试:
df1['Normalize'] = df1.groupby('Symbol')['Close'].transform(lambda x: x/x.iloc[0]).fillna(1)#.reset_index()
正如Shubham所评论的:
可以将组按其第一个值除以
df['Close'] /= df1.groupby('Symbol')['Close'].transform('first')
:)
df1:
Date Symbol Close Normalize
0 2020-11-23 APLAPOLLO 3247.45 1.000000
1 2020-11-24 APLAPOLLO 3219.95 0.991532
2 2020-11-25 APLAPOLLO 3220.45 0.991686
3 2020-11-26 APLAPOLLO 3178.95 0.978907
4 2020-11-27 APLAPOLLO 3378.90 1.040478
5 2020-12-01 APLAPOLLO 3446.85 1.061402
6 2020-12-02 APLAPOLLO 3514.55 1.082249
7 2020-12-03 APLAPOLLO 3545.80 1.091872
8 2020-12-04 APLAPOLLO 3708.60 1.142004
9 2020-12-07 APLAPOLLO 3868.55 1.191258
10 2020-12-08 APLAPOLLO 3750.30 1.154845
11 2020-12-09 APLAPOLLO 3801.35 1.170565
12 2020-12-10 APLAPOLLO 3766.65 1.159879
13 2020-12-11 APLAPOLLO 3674.30 1.131442
14 2020-12-14 APLAPOLLO 3814.80 1.174706
15 2020-12-15 APLAPOLLO 780.55 0.240358
16 2020-12-16 APLAPOLLO 790.20 0.243329
17 2020-12-17 APLAPOLLO 791.20 0.243637
18 2020-12-18 APLAPOLLO 769.70 0.237017
19 2020-12-21 APLAPOLLO 726.60 0.223745
20 2020-12-22 APLAPOLLO 744.30 0.229195
21 2020-11-23 AUBANK 869.65 1.000000
22 2020-11-24 AUBANK 874.35 1.005404
23 2020-11-25 AUBANK 856.25 0.984592
24 2020-11-26 AUBANK 861.05 0.990111
25 2020-11-27 AUBANK 839.05 0.964813
26 2020-12-01 AUBANK 872.90 1.003737
27 2020-12-02 AUBANK 886.65 1.019548
28 2020-12-03 AUBANK 880.30 1.012246
29 2020-12-04 AUBANK 880.45 1.012419
30 2020-12-07 AUBANK 898.65 1.033347
31 2020-12-08 AUBANK 907.80 1.043868
32 2020-12-09 AUBANK 918.90 1.056632
33 2020-12-10 AUBANK 911.05 1.047605
34 2020-12-11 AUBANK 920.30 1.058242
35 2020-12-14 AUBANK 929.45 1.068763
36 2020-12-15 AUBANK 922.60 1.060887
37 2020-12-16 AUBANK 915.80 1.053067
38 2020-12-17 AUBANK 943.15 1.084517
39 2020-12-18 AUBANK 897.00 1.031449
40 2020-12-21 AUBANK 840.45 0.966423
41 2020-12-22 AUBANK 856.00 0.984304
42 2020-11-23 AARTIDRUGS 711.70 1.000000
我有一个包含2171列和200行的df。我想标准化这些COL的范围。 [输入df] [如果代码仅用于一个列,我不确定如何应用于一系列列] 我对python非常陌生,我不知道为什么它会给我以下错误:
如何规范化主要由嵌套数组组成的 spark 数据帧? 我想要类似emple的东西,它将保留(id,foo,bar,baz)的模式,但为数组的每个值返回一个单独的记录。最终结果不应再包含数组。 Foo和baz是相关的。它们的顺序不得扭曲。它们总是具有相同的长度,foo的第一个值与baz的第一个数值相关,以此类推。也许我应该先将它们组合成一个列/结构? 最终结果应如下所示: 部分相关问题-爆炸(转置?
你能帮我写以下的JOLT规范吗? 输入JSON: 我需要得到输出:
表规范 命名统一小写下划线 非CMF核心应用,统一带应用表前缀,如portal_ 插件表,统一带插件表前缀,如:demo_ 表默认编码utf8mb4,默认排序规则utf8mb4_general_ci 引擎统一innodb 写表注释 字段规范 命名统一小写下划线 非自增主键一定要写字段注释 数据类型尽量用数字类型,数字类型的比字符类型的要快很多。 数据类型尽量小,这里的尽量小是指在满足可以预见的未来
表规范 命名统一小写下划线 非CMF核心应用,统一带应用表前缀,如portal_ 插件表,统一带插件表前缀,如:plugindemo 表默认编码utf8mb4,默认排序规则utf8mb4_general_ci 引擎统一innodb 写表注释 字段规范 命名统一小写下划线 非自增主键一定要写字段注释 数据类型尽量用数字类型,数字类型的比字符类型的要快很多。 数据类型尽量小,这里的尽量小是指在满足可以
我有一个熊猫数据框,它有语料库的术语频率,术语为行,年份为列,就像这样: 我希望能够通过将每个单词的值除以给定年份的总单词数来标准化它们——有些年份包含两倍多的文本,所以我试图按年缩放(像谷歌图书一样)。我已经看了如何缩放单个列的例子,克里斯·阿尔邦和我在SO上看到了缩放所有列的例子,但是每次我试图将这个数据框转换为一个数组来缩放时,事情都会窒息列这个词不是数字。(我尝试将术语列设置为索引,但不太