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

获取数据表中分类变量的最小值和最大值

傅穆冉
2023-03-14
   D   X   Y   Z
   A  22  16  23
   A  21  16  22
   A  20  17  21
   B  33  50  11
   B  34  53  12
   B  34  55  13
   C  44  34  11
   C  45  33  11
   C  45  33  10
   D  55  35  60
   D  57  34  61
   E  66  36  13
   E  67  38  14 
   E  67  37  13
D Xmin Xmax Ymin Ymax Zmin Zmax
A 20    22   16   17   21   23 
B 33    34   50   55   11   13    
C 44    45   33   34   10   11  
D 55    57   34   35   60   61
E 66    67   36   38   13   14
min_max_df = dfObj.groupby('D').agg({'X': [dfObj.min(axis=0), dfObj.max(axis=0)]})

共有1个答案

黄宏大
2023-03-14
df = df.groupby('D').agg(['min', 'max'])
df.columns = df.columns.map("".join)  # flatten multi-level columns

输出

>>> df

   Xmin  Xmax  Ymin  Ymax  Zmin  Zmax
D                                    
A    20    22    16    17    21    23
B    33    34    50    55    11    13
C    44    45    33    34    10    11
D    55    57    34    35    60    61
E    66    67    36    38    13    14

我做了一些简单的测试,比较了Celius的、Asish的和user17242583/my的解决方案。

设置

import numpy as np 
import pandas as pd 
from itertools import product

n = 1_000_000
rng = np.random.default_rng() 

df = pd.DataFrame({
    'D': rng.choice(list("ABCDEFGH"), size=n),
    'X': rng.integers(100, size=n),
    'Y': rng.integers(100, size=n),
    'Z': rng.integers(100, size=n),
})

>>> df.shape
(1000000, 4)
# Ashish's 
>>> %%timeit -n 50
... aggs = {f"{col}{fn}": (col, fn) for col,fn in product(['X', 'Y', 'Z'], ['min', 'max'])}
... df1 = df.groupby('D').agg(**aggs) 

116 ms ± 5.88 ms per loop (mean ± std. dev. of 7 runs, 50 loops each)

# user17242583's / mine 
>>> %%timeit -n 50
... df1 = df.groupby('D').agg(['min', 'max'])
... df1.columns = df1.columns.map("".join)  # flat multi-level columns

120 ms ± 4.69 ms per loop (mean ± std. dev. of 7 runs, 50 loops each)

#Celius's
>>> %%timeit -n 50
... df1 = df.groupby('D').min().join(df.groupby('D').max(),lsuffix='min',rsuffix='max')

178 ms ± 6.29 ms per loop (mean ± std. dev. of 7 runs, 50 loops each)
 类似资料:
  • 嗨,我有一个带有chartjs的图表,它插入最小值,最大值,平均值之间,带有条形图表。到目前为止,一切都很好,输入了值,我想做的是图形的条形从y轴上的最小值开始定位到y轴上的最大值,我不希望柱线从值0开始。

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

  • 我创建了一个路由问题,并为其添加了一些维度。找到一个解决方案分配,我想知道每个索引的累积值。我注意到赋值的累积值不仅有值方法,还有最小值和最大值方法。显然,累积变量的实现方式可以表示区间。我可以看到设置 <代码>slack\u max 为累积变量引入了歧义,因为它们是如何开始以及在每个站添加多少松弛的选择。但是 问题:如何计算每个指数的最小值和最大值?

  • 还有其他关于datatable上的行运算符的帖子。它们要么太简单,要么解决了特定的场景 我这里的问题更一般。有一个使用dplyr的解决方案。我已经尝试过了,但没有找到一个使用数据的等效解决方案。表语法。你能推荐一个优雅的数据吗。与dplyr版本复制相同结果的表解决方案? 编辑1:真实数据集上建议解决方案的基准总结(10MB,73000行,24个数字列上的统计数据)。基准结果是主观的。然而,经过的时

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

  • 本文向大家介绍C#获取数组中最大最小值的方法,包括了C#获取数组中最大最小值的方法的使用技巧和注意事项,需要的朋友参考一下 根据下面函数获取数组中最大最小值即可。调用时候直接传数组范围一个float类型的变量