我有以下玩具数据帧(真正的有500k行):
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
列值:
我找到了this,但它对我不起作用
到目前为止,我已经:
df.loc[:, 'size2'] = df.groupby('adult',as_index=True)['weight','size']
.transform(lambda x: x.ix[x['weight'].idxmax()]['size'])
您可以将
transform
与loc
和values
一起使用:一步一步,我们首先找到合适的指标:
^{pr2}$然后我们使用这些来索引
size
列中的loc
:最后,我们使用
.values
,这样当我们试图赋值时,索引不会妨碍我们:只是对@jazrael答案的更详细的描述,以及您的数据帧:
要获取“最大权重”行的大小值,请执行以下操作:
^{pr2}$“成人”上的groupby将生成一个索引值为False和True的序列:
使用
reset_index
我们在DataFrame中转换serie::pd.merge
在“成人”上:你可以用^{} 。我认为}。在
size2
中的第一个值是M
,因为maxweight
是{相关问题 更多 >
编程相关推荐