我正在尝试计算一个新列,其中包含几个组中每个组的最大值。我有 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/(max-min) * odds
的列,其中 max
和 min
是每个团体。
最佳答案
df['max'] = df.groupby('group')['odds'].transform('max')
这等同于冗长的:
maxima = df.groupby('group')['odds'].max()
df['max'] = df['group'].map(maxima)
transform
方法将 groupby
结果与 groupby
索引器对齐,因此不需要显式映射。
关于一组中的 Python Pandas 最大值作为新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35640364/