我正在尝试计算一个新列,其中包含多个组中每个组的最大值.我来自Stata背景,所以我知道Stata代码会是这样的:
by group,sort: egen max = max(odds)
例如:
data = {'group' : ['A','A','B','B'],'odds' : [85,75,60,65]}
然后我希望它看起来像:
group odds max
A 85 85
A 75 85
B 60 65
B 65 65
最终我试图形成一个列,其中每个组的最大值和最小值为1 /(最大 – 最小)*赔率.
最佳答案
使用
groupby
transform
:
df['max'] = df.groupby('group')['odds'].transform('max')
这相当于详细:
maxima = df.groupby('group')['odds'].max()
df['max'] = df['group'].map(maxima)
transform方法将groupby结果与groupby索引器对齐,因此不需要显式映射.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。