我有以下的玩具数据框(实际数据框有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
想要按
adult
分组,选择weight
最大的行,并将其赋值给一个新列size2
中的size
列的值。换句话说,我们希望有一个名为
size2
的列,该列包含具有最大weight
值的行的size
值,并传播到adult
分组。因此,所有adult
=False的行都将具有值S,因为adult=False时max weight为20。 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
我发现了这个链接,但它对我不起作用。
到目前为止,我有:
df.loc[:, 'size2'] = (df.groupby('adult',as_index=True)['weight','size']
.transform(lambda x: x.ix[x['weight'].idxmax()]['size']))