【发布时间】:2021-09-02 13:19:01
【问题描述】:
我有一个这样的 DataFrame:
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
【问题讨论】:
标签: python pandas pandas-groupby apply