Pandas:将 groupby 的结果分配给数据框到新列

Gil*_*ere 5 python group-by dataframe pandas

我有以下玩具数据框(真实的有 50 万行):

df = pd.DataFrame({'size': list('SSMMMLS'),
                   'weight': [8, 10, 11, 1, 20, 14, 12],
                   'adult' : [False] * 5 + [True] * 2})

   adult size  weight
0  False    S       8
1  False    S      10
2  False    M      11
3  False    M       1
4  False    M      20
5   True    L      14
6   True    S      12
Run Code Online (Sandbox Code Playgroud)

而想要GROUPBY adult,选择该行的这weight是一个新的列最大,并指定size2size列值:

   adult size size2  weight
0  False    S     S       8
1  False    S     S      10
2  False    M     S      11
3  False    M     S       1
4  False    M     S      20
5   True    L     L      14
6   True    S     L      12
Run Code Online (Sandbox Code Playgroud)

我找到了这个,但它对我不起作用

到目前为止我有:

df.loc[:, 'size2'] = (df.groupby('adult',as_index=True)['weight','size']
                        .transform(lambda x: x.ix[x['weight'].idxmax()]['size']))
Run Code Online (Sandbox Code Playgroud)