使用groupby创建具有最大值的新列

时间:2018-03-31 20:00:18

标签: python pandas numpy dataframe group-by

从以下数据框中,我尝试添加一个新列,条件是每<div id="containerWrapper" align="center"><div id="container"></div></div> 检查一次最大值。然后将每个id的每一行的最大值放在新列中。

id

预期结果:

df

id  value
1   0
1   0
1   0
2   0
2   1
3   1
3   1

我试过了:

id  value new_column
1   0     0
1   0     0
1   0     0
2   0     1
2   1     1
3   1     1
3   1     1

或者:

df['new_column'] = df.groupby(['id'])['value'].idxmax()

但这些都没有产生预期的结果。

1 个答案:

答案 0 :(得分:2)

您需要使用transform

df['new_column'] = df.groupby(['id'])['value'].transform(max)

这更简洁地复制了以下内容:

df['new_column'] = df['id'].map(df.groupby(['id'])['value'].max())

请记住,groupby操作的结果是一个索引设置为分组列的系列。

由于您的原始数据框与groupby对象之间的索引未对齐,因此不会自动进行分配。