当前位置: 首页 > 知识库问答 >
问题:

Pandas在groupby之后获取所有行的最小值和最大值

温嘉赐
2023-03-14

我有一个这样的数据帧:

df = pd.DataFrame({'A' : list('ababababba'),
                   'B' : [1, 1, 1, 2, 2, 1,1,2,1,1],
                   'C' : [2.0, 5., 8., 1., 2., 9.,2.0,4.0,5.0,3.0],
                   'D' : [10,20,30,10,20,30,20,40,50,10]})

必修的:

   A  B    C   D
0  a  1  2.0  10 # a1 min keep
1  b  1  5.0  20 # b1 min
2  a  1  8.0  30 # a1 max keep
3  b  2  1.0  10 
4  a  2  2.0  20
                  # b1 removed
                  # a1 remove
7  b  2  4.0  40
8  b  1  5.0  50 # b1 max keep
9  a  1  3.0  10 # a1 min keep

相关链接:pandas groupby的最小和最大行

pandas groupby中两个系列的最大值和最小值

pandas groupby中的最大和最小日期

单击groupby,然后按列的值(例如,最小值、最大值)选择一行

共有1个答案

华欣怡
2023-03-14

你想要这个吗:

df.groupby(['A','B']).D.agg([min,max])

输出:

+---+---+-----+-----+
|   |   | min | max |
+---+---+-----+-----+
| A | B |     |     |
+---+---+-----+-----+
| a | 1 |  10 |  30 |
|   | 2 |  20 |  20 |
| b | 1 |  20 |  50 |
|   | 2 |  10 |  40 |
+---+---+-----+-----+

编辑:如果您希望所有行都具有最小或最大值,则考虑<代码>转换< /代码>

groups = df.groupby(['A','B']).D
min_val = groups.transform(min)
max_val = groups.transform(max)

df[(df.D==min_val) | (df.D==max_val)]

输出:

+---+---+---+-----+----+
|   | A | B |  C  | D  |
+---+---+---+-----+----+
| 0 | a | 1 | 2.0 | 10 |
| 1 | b | 1 | 5.0 | 20 |
| 2 | a | 1 | 8.0 | 30 |
| 3 | b | 2 | 1.0 | 10 |
| 4 | a | 2 | 2.0 | 20 |
| 7 | b | 2 | 4.0 | 40 |
| 8 | b | 1 | 5.0 | 50 |
+---+---+---+-----+----+
 类似资料:
  • 问题内容: 我有一个数据框,如下所示: 我想要一个数据框,该数据框具有每个用户num1的最小值和每个用户num2的最大值。 输出应类似于: 我知道,如果我想要两栏的最大值,我可以做: 是否有一些等效方法而不必执行以下操作: 问题答案: 使用+ by ,因此必须按或排序列。最后添加为必要时转换为。 等同于:

  • 预期输出:获取组之间计数为max的结果行,如: 示例2:这个数据帧,我按分组: 对于上面的示例,我希望获取每个组中等于max的所有行,例如:

  • 问题内容: 我有一个像这样的数组: 我需要提取最小和最大的权重值。在这个例子中 $ min_value = 175 $ max_value = 200 有什么帮助吗?谢谢 ! 问题答案: 选项1. 首先,您映射该数组以获取这些数字(而不是全部详细信息): 然后得到最小和最大: 选项2。 (仅当您没有PHP 5.5或更高版本时)与选项1相同,但要选择值,请使用: 选项3。 选项4。 如果您只需要一个

  • 我有一个任务,给我一个随机生成的BST的根。我得到了随机生成的测试用例。 分配说明如下: 您将得到二叉搜索树的根节点T和两个整数:min和max。确定存储在T中大于或等于min且小于或等于max的所有键的总和。递归地实现算法 我不允许使用全局变量或创建辅助函数 我当前的代码是: 我的问题是,如果在递归过程中的任何时候,节点都会触发基本情况,并导致我的函数无法正确完成。我相信我的命令可能是罪魁祸首。

  • 问题内容: 我正在尝试编写一个查询,每天从价格明细表中获取每个商品的最低和最高价格。 在价格明细表中,每天设置多次价格,因此同一日期有很多记录。因此,我想要一个表,其中每个日期都有一行,然后将该表连接到同一张表,因此对于每个不同的日期,我都需要最小值和最大值。 SQL查询 概括 餐桌在同一天设定了许多价格。想要每个交易所报价的每天的最小值和最大值。 谢谢 问题答案: 一个简单的应该工作: 不知道为

  • 问题内容: 在按“列”分组之后,如何在pandas数据框中找到列的最大值的所有行? 示例1:以下dataFrame,我将其分组: 预期的输出:获取各组之间计数最大的结果行,例如: 示例2:此数据框,我将其分组为: 对于上面的示例,我想获取每个组中等于的所有行,例如: 问题答案: 要获取原始DF的索引,你可以执行以下操作: 请注意,如果每个组有多个最大值,则将全部返回。 更新资料 在OP所要求的情况