【发布时间】:2017-10-18 12:41:31
【问题描述】:
我正在使用 Pandas 数据框 DF,如下所示。 DF中的所有元素要么是正整数要么是0。
如果列'c'在第i行包含等于k的值,使得k大于或等于2,我想删除第i行,第(i-1)行,...,和行 (i-(k-1)) (因此总共删除了 k 行)。我仅要求在列“c”的值至少为 2 时删除行。
在示例中,这种情况发生了一次,其中所讨论的“k”等于 3,并且在第 5 行中找到(因此我删除了第 5、4 和 3 行——总共三行,包括包含“3”值的行)。
注意如果'c'列的第j行等于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']
【问题讨论】: