如何根据行之间的数据关系删除行

时间:2019-11-16 13:54:16

标签: python pandas dataframe

在一个数据框中,我可以总结以下数据:

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。有什么方法可以用几行有效地完成此操作,或者在这种情况下是否需要循环?希望我能解释一下我的情况。

0 个答案:

没有答案