pandas return groupby 和 max 的辅助列
pandas return auxilliary column from groupby and max
我有一个 pandas DataFrame,其中包含 3 列 A、B 和 V。
我想要一个以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
我有一个 pandas DataFrame,其中包含 3 列 A、B 和 V。
我想要一个以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