Python Pandas组中的最大值为新列

前端之家收集整理的这篇文章主要介绍了Python Pandas组中的最大值为新列前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试计算一个新列,其中包含多个组中每个组的最大值.我来自Stata背景,所以我知道Stata代码会是这样的:

by group,sort: egen max = max(odds) 
@H_502_7@

例如:

data = {'group' : ['A','A','B','B'],'odds' : [85,75,60,65]}
@H_502_7@

然后我希望它看起来像:

    group    odds    max
     A        85      85
     A        75      85
     B        60      65
     B        65      65
@H_502_7@

最终我试图形成一个列,其中每个组的最大值和最小值为1 /(最大 – 最小)*赔率.

最佳答案
使用groupby transform

df['max'] = df.groupby('group')['odds'].transform('max')
@H_502_7@

这相当于详细:

maxima = df.groupby('group')['odds'].max()
df['max'] = df['group'].map(maxima)
@H_502_7@

transform方法将groupby结果与groupby索引器对齐,因此不需要显式映射.

猜你在找的Python相关文章