Python 基于列中的值删除以下行的数据帧
这是一个简单的问题,但我没有找到任何关于这个问题的信息。我有以下数据框架,希望完成以下工作: 在我们的数据框中,如果Roll=1,我想删除下一行,并且只删除那一行。请记住,Roll的许多行将为0,但只有少数行需要删除,特别是前一行Roll=1的行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
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
值