如何获取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 行样本
您可以使用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不是最大的,它也能工作。