DataFrame无法保存正确的值

时间:2016-04-22 22:39:40

标签: python dataframe machine-learning

我正在处理一个大型数据集,我需要查看同一列中的下一行值是否大于当前值。然后保存1或-1。因此,如果col d中的当前行为1并且同一col中的下一个值为2,则它将在同一行和相同数据帧中的新列('e)上保存1。问题是它总是保存一个值。

{{1}}

1 个答案:

答案 0 :(得分:1)

为简单起见,假设您的数据框只有一列。

np.random.seed(14)  # so you can reproduce
df = pd.DataFrame(np.random.randn(10, 1), columns=['a'])
df.head()

---------
 a
---------
 1.331587
 1.331587
 0.715279
-1.545400
-0.008384
 0.621336

您可以使用shift()来延迟(或领导)数据。

df['a_new'] = df.shift(periods=1).fillna(0.0)
df.head()

---------------------
 a           a_new
---------------------
 1.331587    0.000000
 0.715279    1.331587
-1.545400    0.715279
-0.008384   -1.545400
 0.621336   -0.008384

然后使用列表理解来获取1-1

df['a_flags'] = [1 if x > y else -1 for x, y in zip(df.a, df.a_new)]
df.head()

-------------------------------
 a           a_new       a_flag
-------------------------------
 1.331587    0.000000    1
 0.715279    1.331587   -1
-1.545400    0.715279   -1 
-0.008384   -1.545400    1
 0.621336   -0.008384    1