我有以下数据集:
index Label Value
0 NO 12
1 NO 13
2 NO 5
3 NO 8
4 NO 12
5 YES 10
6 YES 13
7 YES 9
8 YES 18
9 NO 12
10 NO 10
11 NO 7
我的目标是在第一个YES标签之前将NO的最后三个标签替换为YES。
因此,我希望获得以下数据:
index Label Value
0 NO 12
1 NO 13
2 YES 5
3 YES 8
4 YES 12
5 YES 10
6 YES 13
7 YES 9
8 YES 18
9 NO 12
10 NO 10
11 NO 7
因此索引2、3和4变成了YES
答案 0 :(得分:2)
where
+ bffill
df['Label'] = df.Label.where(df.Label.eq('YES')).bfill(limit=3).fillna(df.Label)
index Label Value
0 0 NO 12
1 1 NO 13
2 2 YES 5
3 3 YES 8
4 4 YES 12
5 5 YES 10
6 6 YES 13
7 7 YES 9
8 8 YES 18
9 9 NO 12
10 10 NO 10
11 11 NO 7