python - 将列值分组在一起

标签 python pandas

我有一个像这样的数据框:

Class  price  demand
1       22       8
1       60       7
3       32       14
2       72       9
4       45       20
5       42       25

我想做的是将 1-3 类分组在一个类别中,将 4-5 类分组在一个类别中。然后我想得到每个类别的价格总和以及每个类别的需求总和。我也想得到平均值。结果应如下所示:

Class   TotalPrice   TotalDemand   AveragePrice  AverageDemand
P          186            38           46.5          9.5   
E          87             45           43.5          22.5

其中 P 是 1-3 类,E 是 4-5 类。我如何在 Pandas 中按类别分组?有办法做到这一点吗?

最佳答案

In [8]: df.groupby(np.where(df['Class'].isin([1, 2, 3]), 'P', 'E'))[['price', 'demand']].agg(['sum', 'mean'])
Out[8]: 
  price       demand      
    sum  mean    sum  mean
E    87  43.5     45  22.5
P   186  46.5     38   9.5

关于python - 将列值分组在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51990218/

相关文章:

python - 如何在新的python关键字文件中共享当前浏览器(webdriver)对象

python - 在一行中使用一个表达式两次 - 作为字符串格式的条件和?

python - 如何使用另一个列表中的字符串创建列表?

python-3.x - 如何在 Pyramid 框架内的请求之间缓存/内存 pandas DataFrame(昂贵的计算)?

python - 在 Pandas 中使用 groupby 和 resample 时如何显示日期时间对象?

python - 在 Python 中按日期时间对缺少日期的用户列表进行排序

python - 正则表达式子序列匹配

python - 根据条件设置 Pandas 数据框的值

python - 用平均值估算多列 NaN 值的最佳方法

Python "TypeError: unhashable type: ' slice'"用于编码分类数据