返回一个布尔值列表,比较Pandas中列表的行数

问题描述:

我想在我的数据框中添加一个新的“真”和“假”列。 如果下一行大于单列的前一行,它将返回一个真值。 举例来说,如果我有一个名为“X”返回一个布尔值列表,比较Pandas中列表的行数

X y 
1 
2 True 
3 True 
2 False 

列如何做到这一点没有福尔循环。如何用y的第一行解决这个问题是空白的?

+0

我相信@piRSquared解决方案是更好的,所以请考虑接受他的答案有一个空.. .--) – MaxU

+1

你的也不错,我会尊重你的建议。 – LykosZ

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 
+1

很难找到更好的解决方案... ;-) – MaxU

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