在带有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

以上是在带有Groupby的Pandas中:从以另一列为条件的列中分配一个值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>