pandas返回groupby和max的辅助列



我有一个包含3列a, B和v的pandas DataFrame

我想要一个以a为索引和一列的DataFrame,其中包含最大V的B

我可以很容易地使用groupby创建一个带有a和最大V的df,然后执行一些操作来提取相应的B,但这似乎是错误的想法。

我一直在玩groupby和agg的组合,一点也不开心。

样本数据:

A,B,V
MHQ,Q,0.5192
MMO,Q,0.4461
MTR,Q,0.5385
MVM,Q,0.351
NCR,Q,0.0704
MHQ,E,0.5435
MMO,E,0.4533
MTR,E,-0.6716
MVM,E,0.3684
NCR,E,-0.0278
MHQ,U,0.2712
MMO,U,0.1923
MTR,U,0.3833
MVM,U,0.1355
NCR,U,0.1058
A = [1,1,1,2,2,2,3,3,3,4,4,4]
B = [1,2,3,4,5,6,7,8,9,10,11,12]
V = [21,22,23,24,25,26,27,28,29,30,31,32]
df = pd.DataFrame({'A': A, 'B': B, 'V': V})
res = df.groupby('A').apply(
lambda x: x[x['V']==x['V'].max()]).set_index('A')['B'].to_frame()
res
B
A    
1   3
2   6
3   9
4  12

最新更新