gpt4 book ai didi

python - 在 Pandas 中使用 Groupby : assign a value from a column conditioned on another column

转载 作者:行者123 更新时间:2023-12-03 21:40:38 24 4
gpt4 key购买 nike

我有一个像这样的数据帧:

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

最佳答案

另一个 transformidxminloc :

df["col3"] = df.groupby("col0").col1.transform(lambda x: df.loc[x.idxmin(), "col2"])
要得到
  col0  col1 col2 col3
0 a 0 w w
1 a 1 x w
2 b 2 y y
3 b 3 z y

关于python - 在 Pandas 中使用 Groupby : assign a value from a column conditioned on another column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68024379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com