从以下数据框中,我尝试添加一个新列,条件是每<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()
但这些都没有产生预期的结果。
答案 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
对象之间的索引未对齐,因此不会自动进行分配。