如何通过向后填充来替换标签

时间:2019-06-17 23:54:31

标签: python pandas scikit-learn label categories

我有以下数据集:

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

1 个答案:

答案 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