如何使用“分组依据”和“剪切”方法在熊猫数据框中使用连续分布对一系列列值进行分组?

Suyen Shrestha

我有一个如下的pandas数据框,显示石油产品轻柴油的最小,最大和平均销售额,我想从中生成显示5年间隔(如2010-2014、2015-2019)的石油产品的最小,最大和平均销售额的数据框,..等等,其中包括结束年份。

假设以下数据框的名称为“ lightdiesel_df”

   petroleum_product  year  max_sale  min_sale  avg_sale
0   Light Diesel Oil  2014         0         0       0.0
1   Light Diesel Oil  2013         0         0       0.0
2   Light Diesel Oil  2012       258       258     258.0
3   Light Diesel Oil  2011         0         0       0.0
4   Light Diesel Oil  2010       227       227     227.0
5   Light Diesel Oil  2009       238       238     238.0
6   Light Diesel Oil  2008       377       377     377.0
7   Light Diesel Oil  2007       306       306     306.0
8   Light Diesel Oil  2006       179       179     179.0
9   Light Diesel Oil  2005       290       290     290.0
10  Light Diesel Oil  2004        88        88      88.0
11  Light Diesel Oil  2003       577       577     577.0
12  Light Diesel Oil  2002       610       610     610.0
13  Light Diesel Oil  2001      2413      2413    2413.0
14  Light Diesel Oil  2000      3416      3416    3416.0

所以,基本上我想要以下输出:

petroleum_product   year      min_sale  max_sale  avg_sale
Light Diesel Oil    2010-2014   227     258        242.5
Light Diesel Oil    2005-2009   179     377        278
Light Diesel Oil    2000-2004   88     3416       1420.8
特里

尝试使用Grouper传递频率(5年)和参数closed ='left'的方式,如下所示:

df2['year'] = pd.to_datetime(df2['year'], format = '%Y')

(df2.groupby(['petroleum_product', pd.Grouper(key = 'year', freq = '5Y', closed = 'left')])
    .agg(
      {'year': lambda x: '-'.join((str(min(x.dt.year)), str(max(x.dt.year)))),
      'max_sale' : 'max',
      'min_sale' : 'min',
      'avg_sale' : 'mean'
    }).reset_index(level= 0).reset_index(drop=True)
)
#output:

    petroleum_product   year        max_sale    min_sale    avg_sale
0   Light Diesel Oil    2000-2004   3416        88          1420.8
1   Light Diesel Oil    2005-2009   377         179         278.0
2   Light Diesel Oil    2010-2014   258         0           97.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何按熊猫的一系列值分组?

如何使用熊猫对一系列值进行编码

我如何使用 ifelse 对一系列变量进行分组

熊猫:如何选择按键分组的一系列行的最小值

在python中使用glob剪切出一系列文件

使用逻辑索引和分组依据在熊猫数据框中创建新列

使用一系列条件语句分组

熊猫:使用数据框和一系列数据按行计算加权平均值

如何使用一系列列名从pandas数据框中获取一系列数据?

如何标准化熊猫数据框中的一系列列中的数据

如何通过基于名称而不是索引选择一系列列和行来对数据框进行切片?

数据框熊猫的分组依据值计数

如何替换一系列熊猫数据框中的列?

如何使用python检索大熊猫分组依据的最后一列行的值?

如何按列值对熊猫数据框的行进行分组?

如何使用rxJava实现一系列连续操作?

使用分组依据的数据透视熊猫数据框

对 Panda Dataframe 中的一系列列表进行分组

如何对熊猫数据框的连续行进行分组

如何使用python中的fbProphet在熊猫数据框中的多个列上执行分组依据并预测将来的值?

一系列选择(带分组依据)、删除 + 插入和稳定的解释计划随着时间的推移而放缓

如何使用数据子集循环熊猫数据框(如分组依据)

如何从熊猫中的一系列数据框中删除空数据框?

如何使用 R 在一个分布中分布一系列卷

将不相同的熊猫数据框与一系列对象进行比较

如何在pandas数据框中使用分组依据或数据透视表查找均值?

如何在Rust中使用BigInt或BigUint生成一系列值?

如何使用 dplyr 中的 mutate 创建一系列由指定突变值的向量定义和调用的列?

使用 dplyr 进行数据框分组和列转换