Python 返回一个布尔值列表,该值比较列表中的行

Python 返回一个布尔值列表,该值比较列表中的行,python,pandas,Python,Pandas,我想在我的数据框中添加一个新的True和False列“y”。 如果下一行大于单个列的上一行,则返回真值。 例如,如果我有一个名为“X”的列 X y 1 2 True 3 True 2 False 在没有foor循环的情况下,我如何做到这一点。如何解决y的第一行为空的问题 df.assign(y=df.X.diff().gt(0)) X y 0 1 False 1 2 True 2 3 True 3 2 False 如果你想学究气,第一个位置

我想在我的数据框中添加一个新的True和False列“y”。 如果下一行大于单个列的上一行,则返回真值。 例如,如果我有一个名为“X”的列

X  y
1  
2  True
3  True
2  False
在没有foor循环的情况下,我如何做到这一点。如何解决y的第一行为空的问题

df.assign(y=df.X.diff().gt(0))

   X      y
0  1  False
1  2   True
2  3   True
3  2  False

如果你想学究气,第一个位置是空的

df.assign(y=pd.Series(np.diff(df.X) > 0, df.index[1:]))

   X      y
0  1    NaN
1  2   True
2  3   True
3  2  False

很难找到更好的解决方案…;-)我相信“盗版解决方案更好,所以请考虑接受他的回答……-”你的建议也不错,不过我会尊重你的建议。
In [63]: df['y'] = df.X > df.X.shift()

In [64]: df
Out[64]:
   X      y
0  1  False
1  2   True
2  3   True
3  2  False