Groupby 返回最大行的整行发生

Woo*_*per 5 python pandas

如何获取groupby结果的整行数据?

df
   a   b   c  d   e
0  a  25  12  1  20
1  a  15   1  1   1
2  b  12   1  1   1
3  n  25   2  3   3

In [4]: df = pd.read_clipboard()

In [5]: df.groupby('a')['b'].max()
Out[5]: 
a
a    25
b    12
n    25
Name: b, dtype: int64
Run Code Online (Sandbox Code Playgroud)

如何获得整行?

a   b   c  d   e
a  25  12  1  20
b  12   1  1   1
n  25   2  3   3
Run Code Online (Sandbox Code Playgroud)

我试过过滤,但 df[df.e == df.groupby('a')['b'].max()]但大小不同:(

原始数据:

0          1       2        3     4        5     6      7       8    9   
EVE00101  Trial  DRY RUN  PASS  1610071  1610071  Y  20140808  NaN  29   

10        11                12           13                 14  
FF1  ./ff1.sh  Event Validation  Hive Tables  2015-11-30 9:40:34 
Run Code Online (Sandbox Code Playgroud)

Groupby([1,7])[14].max()给了我结果,但在分组系列中作为 1 和 7 作为索引我想要相应的列。它是 15,000 行数据并提供了 1 行样本

Col*_*vel 4

您可以使用argmax()

In [287]: df.groupby('a', as_index=False).apply(lambda x: x.loc[x.b.argmax(),])
Out[287]:
   a   b   c  d   e
0  a  25  12  1  20
1  b  12   1  1   1
2  n  25   2  3   3
Run Code Online (Sandbox Code Playgroud)

这样,即使b不是最大的,它也能工作。