如何使用列中的最大值选择数据框中的行

时间:2017-02-13 04:27:25

标签: python pandas

我有一个数据框,我想要选择所有

df =  A  B C D
     'a' 1 1 1
     'b' 1 2 1
     'c' 1 1 1
     'a' 1 2 2
     'a' 2 2 2
     'b' 1 2 2

我想得到一列中的值是该组的最大值的行。因此,对于上面的示例,如果我想分组为' A'和' B'并获得' C'

中具有最大价值的行
df = A  B C D
    'a' 1 2 2
    'b' 1 2 2
    'c' 1 1 1
    'a' 2 2 2

我知道我想使用groupby,但我不确定在那之后该怎么做。

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用转换功能。这基本上允许您对保留与原始数据帧相同索引的组应用函数。在这种情况下,您可以看到从转换中获得以下内容

In [13]: df.groupby(['A', 'B'])['C'].transform(max)
Out[13]: 
0    2
1    2
2    1
3    2
4    2
5    2
Name: C, dtype: int64

它与原始数据帧具有完全相同的索引,因此您可以使用它来创建过滤器。

df[df['C'] == df.groupby(['A', 'B'])['C'].transform(max)]
Out[11]: 
   A  B  C  D
1  b  1  2  1
2  c  1  1  1
3  a  1  2  2
4  a  2  2  2
5  b  1  2  2

有关详细信息,请参阅the pandas groupby documentation,这非常棒。