当前位置:   article > 正文

pandas的排序、分组groupby及cumsum累计求和_pandas分组后求和

pandas分组后求和

一、生成一列sum_age 对age 进行累加

  1. df['sum_age'] = df['age'].cumsum()
  2. print(df)

二、生成一列sum_age_new 按照 gender和is_good 对age进行累加

  1. df['sum_age_new'] = df.groupby(['gender','is_good'])['age'].cumsum()
  2. print(df)

 

三、根据不同的性别对年龄进行 等级 排序

  1. df['rank_g'] = df.groupby(['gender'])['age'].rank()
  2. print(df)

这里的 rank( ) 即 'rank_g' ,并不是按照1、2、3、4、、依次排

按照官方文档的意思,该函数是沿着某个轴来计算数值数据等级(1到n)。默认情况下,为相等的值分配同一个等级,该等级是这些值的等级的平均值。

例子:

  1. import pandas as pd
  2. obj = pd.Series([7,-5,7,4,2,0,4])
  3. print(obj.rank())

代码对 [7, -5, 7, 4, 2, 0, 4] 进行从小到大地排序,很明显地,可以排成 [-5, 0, 2 ,4, 4, 7, 7],数值7有第6和第7两个位置,那应该排序应该排到第几级?根据官方文档,取平均值,(6+7)/2=6.5,所以两个7的等级都为6.5,同理可得两个4的等级都为(4+5)/2=4.5。

输出:

  1. 0 6.5
  2. 1 1.0
  3. 2 6.5
  4. 3 4.5
  5. 4 3.0
  6. 5 2.0
  7. 6 4.5
  8. dtype: float64

四、对数据排序之后,分组,并累计求和

  1. # 对Start Time进行排序,Connection Type分组,temp进行累计求和cumsum
  2. wsw_1 = wsw.sort_values(['Start Time'])
  3. wsw_1.loc[:, 'Connection Number'] = wsw_1.groupby(['Connection Type'])['temp'].cumsum()

这里如果不对start time排序,Connection Number不会按时间顺序,统计drilling、tripping 的number数

参考:

python中分组排序--groupby(),rank()_baidu_38409988的博客-CSDN博客

https://www.zhihu.com/question/66136235/answer/1172712720

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/161984
推荐阅读
相关标签
  

闽ICP备14008679号