python-3:如何创建新的pandas列作为另一列的两个连续行的减法?

时间:2018-07-26 09:27:06

标签: python-3.x pandas

我有一个熊猫数据框

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做到这一点?非常感谢

1 个答案:

答案 0 :(得分:3)

使用.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']中获取值。