【问题标题】:Perform Pandas Goupby and Percentage Increase/Decrease执行 Pandas Group By 和百分比增加/减少
【发布时间】:2020-07-25 17:22:49
【问题描述】:

我有如下数据框:

           Date      Symbol      Quantity        Volume
0    07-04-2020         ACC       1579268        554047
1    08-04-2020         ACC       2153627        586886
2    09-04-2020         ACC       2658885       1128891
3    07-04-2020    ADANIENT       2463525        408903
4    08-04-2020    ADANIENT       3237290        255480
5    09-04-2020    ADANIENT       2359528        335061

我想在“符号”上执行 groupby 并计算从第一个日期(如(在我的示例中为 07-04-2020)开始的百分比增加或减少后续行。

我想要如下结果:

    Date         Symbol    Quantity  Volume  PctCH_Qty    PctCH_Vol
0   07-04-2020      ACC     1579268  554047          0           0   
1   08-04-2020      ACC     2153627  586886      36.37        5.93 
2   09-04-2020      ACC     2658885  1128891     68.36      103.75 
3   07-04-2020  ADANIENT    2463525  408903          0           0   
4   08-04-2020  ADANIENT    3237290  255480      31.41      -37.52 
5   09-04-2020  ADANIENT    2359528  335061      -4.22      -18.06 

【问题讨论】:

    标签: python python-3.x pandas dataframe group-by


    【解决方案1】:

    想法是将每个组的第一个值除以GroupBy.transformfirst,减去1,多个100 和最后一轮:

    cols = ['Quantity','Volume']
    df[['PctCH_Qty','PctCH_Vol']] = (df[cols].div(df.groupby('Symbol')[cols]
                                             .transform('first'), axis=0)
                                             .sub(1)
                                             .mul(100)
                                             .round(2))
    print (df)
             Date    Symbol  Quantity   Volume  PctCH_Qty  PctCH_Vol
    0  07-04-2020       ACC   1579268   554047       0.00       0.00
    1  08-04-2020       ACC   2153627   586886      36.37       5.93
    2  09-04-2020       ACC   2658885  1128891      68.36     103.75
    3  07-04-2020  ADANIENT   2463525   408903       0.00       0.00
    4  08-04-2020  ADANIENT   3237290   255480      31.41     -37.52
    5  09-04-2020  ADANIENT   2359528   335061      -4.22     -18.06
    

    【讨论】:

    • 谢谢先生的好回答。印象深刻。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 2016-07-02
    • 2019-02-12
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多