我正在使用一个熊猫数据框架,DF,如下所示。DF中的所有元素要么是正整数,要么是0。
如果列“c”在ith行中包含一个等于k的值,使k大于或等于2,则我要删除第一行、第一行( i -1)、.和行(i-(k-1)) (因此总共删除k行)。我只要求在列“c”的值至少为2时删除行。
在本例中,这种情况只发生一次,其中所讨论的'k‘等于3,并在第5行中找到(因此,我总共删除了第5、4和3-3行,包括包含’3‘值的行)。
注如果' c‘列的jth行等于k,则前面的k-1行肯定等于0,这意味着如果删除行j,所有其他被删除的行将只包含列c中的零。
有人知道怎么做吗?
有关具有所需结果的示例数据帧的图像,请参阅https://i.imgur.com/2QpC7JF.png。

数据框架:
A = matrix([[9, 9, 0, 9, 9],
[1, 2, 1, 9, 9],
[8, 8, 0, 2, 3],
[7, 7, 0, 7, 8],
[1, 2, 0, 3, 4],
[6, 6, 3, 6, 6],
[1, 2, 0, 1, 2]])
DF = pd.DataFrame(A)
DF.columns = ['a', 'b', 'c', 'd', 'e']发布于 2017-10-18 12:45:50
根据此文档页,您可以通过df.drop(df.index[[2,3]])删除一系列行。因此,如果像在您的示例中一样,发现第5行触发了drop,则可以使用以下方法执行:
df.drop(df.index[list(range(i-3, i))])在i为5的地方,我还没有测试过这个,但是您可能可以将转换放到list上。
https://stackoverflow.com/questions/46810436
复制相似问题