我有一个熊猫数据框
x
1
3
4
7
10我想创建一个新的列y作为y[i] = x[i] - x[i-1] (和y[0] = x[0])。
因此,上面的数据帧将变成:
x y
1 1
3 2
4 1
7 3
10 3如何使用python-3做到这一点?非常感谢
发布于 2018-07-26 17:29:51
使用.shift()和fillna()
df['y'] = (df['x'] - df['x'].shift(1)).fillna(df['x'])为了解释这是做什么,如果我们print(df['x'].shift(1)),我们得到以下系列:
0 NaN
1 1.0
2 3.0
3 4.0
4 7.0这是'x'中的值向下移动了一行。第一行获取NaN,因为没有高于它的值可以向下移动。所以,当我们这样做的时候:
print(df['x'] - df['x'].shift(1))我们得到:
0 NaN
1 2.0
2 1.0
3 3.0
4 3.0这是你减去的值,但是在我们的第一行,我们又得到了一个NaN。为了清除这一点,我们使用.fillna(),告诉它只要遇到空值,我们就从df['x']中获取值。
https://stackoverflow.com/questions/51535440
复制相似问题