Python 如何获取熊猫数据帧的布尔索引数组,其中obs!=最后一次?

Python 如何获取熊猫数据帧的布尔索引数组,其中obs!=最后一次?,python,pandas,series,Python,Pandas,Series,我有一个数据框,其中有一列我们可以称为“X” 所以像“print(df.X)”这样的东西会产生一些介于-10000和10000之间的整数。例如: ID X 1 0 2 0 3 1 4 1 ... 7334 -19 7335 -19 7336 -20 7337 -20 >>> 对于上面的示例,我想要一个布尔索引,我可以使用它来子集数据帧,其中第3行等于True,第7336行等于True,因为

我有一个数据框,其中有一列我们可以称为“X”

所以像“print(df.X)”这样的东西会产生一些介于-10000和10000之间的整数。例如:

ID     X
1      0
2      0
3      1
4      1
       ...
7334   -19
7335   -19
7336   -20
7337   -20
>>>     

对于上面的示例,我想要一个布尔索引,我可以使用它来子集数据帧,其中第3行等于True,第7336行等于True,因为X中的值与上次观察值不同。其他的都应该是假的

您可以使用检查序列的相等性,并通过转换版本来检查序列本身

注:如果需要,则必须手动将系列中的第一项设置为
False

df['change'] = df['X'] != df['X'].shift()
df['change'].iat[0] = False

print(df)

     ID   X change
0     1   0  False
1     2   0  False
2     3   1   True
3     4   1  False
4  7334 -19   True
5  7335 -19  False
6  7336 -20   True
7  7337 -20  False

“第3行等于真,第7336行等于真”背后的逻辑是什么?@Dillon-观察!=最后的观察。所以在3中,df.loc[2,“X”]!=测向位置[1,“X”]。这有意义吗?