熊猫:根据组聚合添加新列

2024-09-30 08:34:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我是熊猫数据框的新手,我需要一些帮助

假设我有一个数据帧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

实现这样一件事的正确方法是什么


Tags: 数据方法iddfout分数aascore
1条回答
网友
1楼 · 发布于 2024-09-30 08:34:49

您可以通过^{}Score^{}min创建的Series进行比较,然后将掩码转换为整数,以便True/False1/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

另一种方法是使用^{}按掩码指定值:

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

相关问题 更多 >

    热门问题