如何获取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
如何获取整行?
a b c d e
a 25 12 1 20
b 12 1 1 1
n 25 2 3 3
我尝试过滤,但 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
Groupby([1,7])[14].max()
给了我结果,但是在分组系列中作为 1 和 7 作为索引我想要相应的列。 15000行数据,提供1行样本
最佳答案
你可以使用 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
即使 b
不是最大的,这种方式也能正常工作。
关于python - Groupby 返回最大值的整行发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34221863/