当前位置: 首页 > 知识库问答 >
问题:

数据帧单列的规范化

滑畅
2023-03-14

我有一个数据框,如图所示:

我必须将数据框的关闭列规范化如下:

>

  • 对于每个符号,我们必须将随后几天的收盘价除以第一个收盘价。这意味着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)

    其他符号的标准化收盘价应以相同方式计算。

    因此,在计算后,数据帧应如图所示:

    例如:对于阿波罗,从上面的解释:

    1. 2020年11月24日的标准化值=(3219.95/3247.45)=0.991532
    2. 2020年11月25日的标准化值=(2020年11月25日收盘)/(2020年11月23日收盘)=0.991686
    3. 2020年11月26日的标准化值=(2020年11月26日收盘)/(2020年11月23日收盘)=0.978907

    类似地,其他符号也是如此

    关于数据框列的规范化,我参考了以下答案:

    规范化熊猫数据框架的列

    这没有帮助,因为在我的情况下,值会根据条件而变化

  • 共有2个答案

    闻人宏盛
    2023-03-14

    我想你要找的是这个。

       df["Normalise"] =  df.groupby('Symbol', sort=False)['Close'].rolling(2).apply(lambda x: x.iloc[1] / x.iloc[0]).reset_index(0, drop=True)
    
    贾飞鸿
    2023-03-14

    尝试:

    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上看到了缩放所有列的例子,但是每次我试图将这个数据框转换为一个数组来缩放时,事情都会窒息列这个词不是数字。(我尝试将术语列设置为索引,但不太