一组中的 Python Pandas 最大值作为新列

标签 python pandas dataframe grouping pandas-groupby

我正在尝试计算一个新列,其中包含几个组中每个组的最大值。我有 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 的列,其中 maxmin 是每个团体。

最佳答案

使用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 索引器对齐,因此不需要显式映射。

关于一组中的 Python Pandas 最大值作为新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35640364/

相关文章:

python - Windows Media Foundation 解码音频流

python - 如何替换 DataFrame 中丢失的数据

python - Pandas 数据框将 INT64 列转换为 boolean 值

r - 将数据帧的行转换为向量

pandas - 合并 pandas 或 powershell/terminal 中各个子文件夹中的所有 csv 并创建 pandas 数据框

python - 我应该如何组织 Python 源代码?

Python循环url json数据不存储循环结果

python-3.x - 基于多列合并行并连接多列

python - 日期时间分组/对不同年份的月份和日期进行重新采样(删除年份)

python - 如何从 Pandas 数据框中的 4 个级别创建两个垃圾箱?