执行 Pandas Goupby 和百分比增加/减少

我有如下数据框:


           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 


30秒到达战场
浏览 71回答 1
1回答

泛舟湖上清波郎朗

想法是将每组的第一个值除以GroupBy.transformand first、减法1、multiple100和最后一轮: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_Vol0  07-04-2020       ACC   1579268   554047       0.00       0.001  08-04-2020       ACC   2153627   586886      36.37       5.932  09-04-2020       ACC   2658885  1128891      68.36     103.753  07-04-2020  ADANIENT   2463525   408903       0.00       0.004  08-04-2020  ADANIENT   3237290   255480      31.41     -37.525  09-04-2020  ADANIENT   2359528   335061      -4.22     -18.06
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python