在一个数据框中,我可以总结以下数据:
product_no part_no level code
1 1_1 1 h3
1 1_2 1 h5
1 1_3 2 h31
1 1_4 1 h4
1 1_5 1 h35
1 1_6 2 h37
1 1_7 2 h3
1 1_8 3 h13
1 1_9 3 h16
1 1_10 2 h4
2 2_1 1 h1
2 2_2 1 h3
2 2_3 2 h42
2 2_4 1 h75
我要在这里做的是,找到具有特定代码的行,然后删除下面的所有行,直到有等于或更低级别的行。例如,如果我要对代码h3
进行刚刚说明的操作,则所需的输出将为:
product_no part_no level code
1 1_2 1 h5
1 1_3 2 h31
1 1_4 1 h4
1 1_5 1 h35
1 1_6 2 h37
1 1_10 2 h4
2 2_1 1 h1
2 2_4 1 h75
对于part_no 1_1
可以看到,h3
编码行被删除,但它下面的行不被删除,因为它下面的行也是1级。从part_no 2_2
中可以看出,h3
编码的部分确实具有较高级别的行,而part_no 2_2
位于下面。因此,由于级别为1,两个都被删除,然后删除在part_no 2_4
处停止。最后,对于part_no 1_7
,存在多个级别高于下面的1_7
的部分。因此,所有行都将被删除,直到有相等或较低级别的部分1_10
。有什么方法可以用几行有效地完成此操作,或者在这种情况下是否需要循环?希望我能解释一下我的情况。