如何在一列中选择中的行数据框具有最大值
问题描述:
我有一个数据帧,我想选择所有的行是如何在一列中选择中的行数据框具有最大值
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
,但我在那之后不知道该怎么做。
答
最简单的方法是使用变换函数。这基本上让你对一个保留与原始数据帧相同索引的组应用一个函数。在这种情况下,你可以看到你从下面的变换
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,这是非常好的。