返回一个布尔值列表,比较Pandas中列表的行数
问题描述:
我想在我的数据框中添加一个新的“真”和“假”列。 如果下一行大于单列的前一行,它将返回一个真值。 举例来说,如果我有一个名为“X”返回一个布尔值列表,比较Pandas中列表的行数
X y
1
2 True
3 True
2 False
列如何做到这一点没有福尔循环。如何用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
+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
我相信@piRSquared解决方案是更好的,所以请考虑接受他的答案有一个空.. .--) – MaxU
你的也不错,我会尊重你的建议。 – LykosZ