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