gpt4 book ai didi

python - Pandas : Adding new column depending on a group aggregation

转载 作者:太空狗 更新时间:2023-10-30 02:51:40 25 4
gpt4 key购买 nike

我是 Pandas 数据框的新手,我需要一些帮助。

假设我有一个 DataFrame df :

>>print(df)
ID Score
0 AA 100
1 AA 10
2 BB 50
3 BB -20
4 BB 0
5 AA 200

我想添加一个值为 1 的新列。如果它是 ID 的最低分数,否则为 0:

>> print(df_out)
ID Score IsLowestScoreID
0 AA 100 0
1 AA 10 1
2 BB 50 0
3 BB -20 1
4 BB 0 0
5 AA 200 0

实现这样的事情的正确方法是什么?

最佳答案

可以通过Series.eq进行比较Score 列,Seriestransform 创建和 min,然后将 True/False 的掩码转换为整数到 1/0 映射:

df['IsLowestScoreID'] = df['Score'].eq(df.groupby('ID')['Score'].transform('min')).astype(int)
print (df)
ID Score IsLowestScoreID
0 AA 100 0
1 AA 10 1
2 BB 50 0
3 BB -20 1
4 BB 0 0
5 AA 200 0

替代方法是使用 numpy.where通过掩码指定值:

mask = df['Score'].eq(df.groupby('ID')['Score'].transform('min'))
df['IsLowestScoreID'] = np.where(mask, 1, 0)

详细信息:

print (df.groupby('ID')['Score'].transform('min'))
0 10
1 10
2 -20
3 -20
4 -20
5 10
Name: Score, dtype: int64

关于python - Pandas : Adding new column depending on a group aggregation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54901088/

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