在带有Groupby的Pandas中:从以另一列为条件的列中分配一个值
我有一个像这样的数据帧:
df = pd.DataFrame({'col0': list('aabb'),
'col1': np.arange(4),
'col2': list('wxyz'),
'col3': np.nan})
col0 col1 col2 col3
0 a 0 w NaN
1 a 1 x NaN
2 b 2 y NaN
3 b 3 z NaN
我想将对应于 'col1' 最小值的 'col2' 值分配给 'col3',按 'col0' 分组。预期输出:
col0 col1 col2 col3
0 a 0 w w
1 a 1 x w
2 b 2 y y
3 b 3 z y
如果不需要按 'col0' 分组,这将起作用:
df['col3'] = df[df['col1']==df['col1'].min()]['col2'].iloc[0]
col0 col1 col2 col3
0 a 0 w w
1 a 1 x w
2 b 2 y w
3 b 3 z w
同样,这是我尝试使用 groupby/apply,但没有按预期工作:
df['col3'] = df.groupby('col0').apply(lambda x: x[x['col1']==x['col1'].min()]['col2'].iloc[0])
col0 col1 col2 col3
0 a 0 w NaN
1 a 1 x NaN
2 b 2 y NaN
3 b 3 z NaN