Pandas 根据groupby条件-更新列的值

Pandas 根据groupby条件-更新列的值,pandas,pandas-groupby,Pandas,Pandas Groupby,我有一个如下所示的数据框 Session slot_num ID prob s1 1 A 0.2 s1 2 B 0.9 s1 2 B 0.4 s1 2 B 0.4 s1 3 C

我有一个如下所示的数据框

Session      slot_num         ID    prob
s1           1                A     0.2
s1           2                B     0.9
s1           2                B     0.4
s1           2                B     0.4
s1           3                C     0.7
s1           4                D     0.8
s1           4                D     0.3
s1           5                E     0.6
s1           6                F     0.5
s1           7                G     0.7
s2           1                A1    0.6
s2           2                B1    0.5
s2           3                C1    1.1
s2           3                C1    0.6
s2           4                D1    0.7
s2           5                E1    0.6
s2           6                F1    0.7
s2           7                G1    1.2
s2           7                G1    0.7
如果Session和slot_num相同,则将除第一行之外的行的ID更改为TBF

预期产出:

Session      slot_num         ID    prob
s1           1                A     0.2
s1           2                B     0.9
s1           2                TBF   0.4
s1           2                TBF   0.4
s1           3                C     0.7
s1           4                D     0.8
s1           4                TBF   0.3
s1           5                E     0.6
s1           6                F     0.5
s1           7                G     0.7
s2           1                A1    0.6
s2           2                B1    0.5
s2           3                C1    1.1
s2           3                TBF   0.6
s2           4                D1    0.7
s2           5                E1    0.6
s2           6                F1    0.7
s2           7                G1    1.2
s2           7                TBF   0.7
用于掩码,按掩码设置值:

df.loc[df.duplicated(['Session','slot_num']), 'ID'] = 'TBF'
print (df)
   Session  slot_num   ID  prob
0       s1         1    A   0.2
1       s1         2    B   0.9
2       s1         2  TBF   0.4
3       s1         2  TBF   0.4
4       s1         3    C   0.7
5       s1         4    D   0.8
6       s1         4  TBF   0.3
7       s1         5    E   0.6
8       s1         6    F   0.5
9       s1         7    G   0.7
10      s2         1   A1   0.6
11      s2         2   B1   0.5
12      s2         3   C1   1.1
13      s2         3  TBF   0.6
14      s2         4   D1   0.7
15      s2         5   E1   0.6
16      s2         6   F1   0.7
17      s2         7   G1   1.2
18      s2         7  TBF   0.7