首页 > 解决方案 > 如何在熊猫数据框中的每个组上标记第一个值

问题描述

我有一个像后面的数据框

      A      B  
0     0      0   
1     0      0 
2     0      0 
3     1      0 
4     0      0 
5     0      0
6     0      0
7     0      1  
8     1      1  
9     1      1  
10    0      1 
11    0      1 
12    0      1  
13    1      1
14    0      2  
15    0      2    
16    0      2 
17    1      2  
18    0      2 
19    1      2
20    1      2 

我想制作'C',它是每个组'B'的A的第一个值的标记

      A      B      C
0     0      0      0
1     0      0      0
2     0      0      0
3     1      0      1
4     0      0      0
5     0      0      0
6     0      0      0
7     0      1      0
8     1      1      1
9     1      1      0
10    0      1      0
11    0      1      0
12    0      1      0
13    1      1      0
14    0      2      0
15    0      2      0
16    0      2      0
17    1      2      1
18    0      2      0
19    1      2      0
20    1      2      0

我不知道这样做我尝试了 groupby 方法,但我未能将它们放入新列中

标签: pythonpandasdataframe

解决方案


尝试使用groupbyandtransformnp.where

df['C'] = df.groupby('B')['A'].transform(lambda x: np.where(x.duplicated(), 0, x))

现在:

print(df)

是:

    A  B  C
0   0  0  0
1   0  0  0
2   0  0  0
3   1  0  1
4   0  0  0
5   0  0  0
6   0  0  0
7   0  1  0
8   1  1  1
9   1  1  0
10  0  1  0
11  0  1  0
12  0  1  0
13  1  1  0
14  0  2  0
15  0  2  0
16  0  2  0
17  1  2  1
18  0  2  0
19  1  2  0
20  1  2  0

推荐阅读