Python Pandas DataFrame:查找另一列的每个唯一值的最大值

YourCuggino

我有一个大的数据框(从500k到1M行),其中包含以下3个数字列:ID,A,B

我想对结果进行过滤,以便获得一张下表所示的表格,其中,对于列id的每个唯一值,我都有A和B的最大值和最小值。我该怎么办?

编辑:我已经更新了下面的图像,以更加清晰:当我从一列中获取最大或最小值我也需要得到别人的列与之相关的数据

在此处输入图片说明

约翰

样本数据(请注意,您发布的图片未经重新输入就无法被潜在的答疑人使用,因此我在此代替了一个简单的示例):

df=pd.DataFrame({ 'id':[1,1,1,1,2,2,2,2],
                   'a':range(8), 'b':range(8,0,-1) })

这里的关键是在运用idxmaxidxmin,然后用索引把玩,让你可以在一个可读的方式合并的事情。这是完整的答案,您不妨检查一下中间数据框以了解其工作原理。

df_max = df.groupby('id').idxmax()
df_max['type'] = 'max'
df_min = df.groupby('id').idxmin()
df_min['type'] = 'min'

df2 = df_max.append(df_min).set_index('type',append=True).stack().rename('index')

df3 = pd.concat([ df2.reset_index().drop('id',axis=1).set_index('index'), 
                  df.loc[df2.values] ], axis=1 )

df3.set_index(['id','level_2','type']).sort_index()

                 a  b
id level_2 type      
1  a       max   3  5
           min   0  8
   b       max   0  8
           min   3  5
2  a       max   7  1
           min   4  4
   b       max   4  4
           min   7  1

请特别注意df2如下所示:

id  type   
1   max   a    3
          b    0
2   max   a    7
          b    4
1   min   a    0
          b    3
2   min   a    4
          b    7

最后一栏有持有该指数值df是推导与idxmaxidxmin因此,基本上所有你需要的信息是df2它剩下的只是合并背部的问题df,使之更具可读性。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python:Pandas:如何根据Groupby在另一列中查找最大值

Python Pandas组基于列并获取最大值,但基于另一列排除

Pandas 基于另一列 python 获取一列中的唯一值

Python pandas:对于一列中的每个唯一值,在另一列中找到一个最小值并从另一列的值中减去它

在另一列中获取最大值行以获得唯一值:python

numpy python:在另一列中为每个唯一值从一列中找到最大值

Python Pandas DataFrame检查一列的值是否在另一列表中

Python pandas - 为另一列中的每个不同值显示一列中记录数最多的值

查找特定列的最大值,但在 Pandas 中返回另一列

Python Pandas-将每个键和值映射到唯一列

根据一列的最小值和最大值恢复所有行-Python Pandas

Python:由另一列运行最大值?

创建一列,其值是python中另一列范围的最大值

Python Pandas分组并基于另一列排除值

Pandas / Python:根据另一列中的值设置一列的值

在Python Pandas中找到一列的最小值大于另一列的值

Python Pandas:在一个列中查找落入另一列范围内的值

Python Pandas:在包含numpy数组的数据框列中查找每一行的最大值

根据另一列(Python,Pandas)中的值删除一列的重复项

Python Pandas 透视:如何在第一列中分组并为第二列中的每个唯一值创建一个新列

pandas groupby agg 从一列获取最大值并从另一列带来值

pandas groupby,您将获得一列的最大值和另一列的最小值

如何以Python方式返回具有唯一列Pandas DataFrame的非nan值的df

在第一列相同的所有行中找到Pandas,Python中的最小值,最大值,平均值

在 Python 中查找 Pandas 的每个单元格中的最大值/最小值

Python(pandas)遍历一列中的值,并对每个值进行计算

通过 Python / Pandas 中的另一列查找 Dataframe 组列中的增加、减少

从 Pandas Dataframe 中查找列中的唯一值,并查看这些值是否在另一列中具有相同的值

根据数组的另一列在一列中聚合最小值最大值-Python