Python 基于列中的值删除以下行的数据帧

Python 基于列中的值删除以下行的数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,这是一个简单的问题,但我没有找到任何关于这个问题的信息。我有以下数据框架,希望完成以下工作: 在我们的数据框中,如果Roll=1,我想删除下一行,并且只删除那一行。请记住,Roll的许多行将为0,但只有少数行需要删除,特别是前一行Roll=1的行 Date Close Open Roll 1 500 499 0 2 502 502 0 3 500 499 0 4 500

这是一个简单的问题,但我没有找到任何关于这个问题的信息。我有以下数据框架,希望完成以下工作:

在我们的数据框中,如果Roll=1,我想删除下一行,并且只删除那一行。请记住,Roll的许多行将为0,但只有少数行需要删除,特别是前一行Roll=1的行

Date    Close    Open    Roll
1       500      499     0
2       502      502     0
3       500      499     0
4       500      499     1
5       501      502     0 (delete this row)
6       506      506     0
7       509      508     0

创建一个布尔掩码,用于测试前一行是否包含1:

In [24]:
df[df['Roll'].shift() != 1]

Out[24]:
   Date  Close  Open  Roll
0     1    500   499     0
1     2    502   502     0
2     3    500   499     0
3     4    500   499     1
5     6    506   506     0
6     7    509   508     0
布尔掩码如下所示:

In [25]:
df['Roll'].shift() != 1

Out[25]:
0     True
1     True
2     True
3     True
4    False
5     True
6     True
Name: Roll, dtype: bool

我不明白,这就是我回答的第一部分所表明的一切好,谢谢你,埃德楚姆!另外,你能为我指出详细解释shift()的方向吗?我很难找到关于它的详细信息,因为它看起来很简单,但效果很好。欣赏它api有一点信息如果我错了请纠正我,但是这里的逻辑是代码通过查看Roll=1的True或False在Roll系列中运行,然后基于结果为False,它向下移动整行,从而消除它吗?我想我是想弄清楚这样一段简单的代码是如何做到这一切的。它将序列移动一行,没有滚动,因为它将在第一行引入一个
NaN