在pandas中添加连续行差异的列

AMM*_*AMM 56 series dataframe pandas

假设我有一个这样的数据帧

    A   B
0   a   b
1   c   d
2   e   f 
3   g   h
Run Code Online (Sandbox Code Playgroud)

0,1,2,3是次,a,c,e,g是一个时间序列,b,d,f,h是另一个时间序列.我需要能够在orignal数据帧中添加两列,这是通过计算某些列的连续行的差异得到的.

所以我需要这样的东西

    A   B   dA
0   a   b  (a-c)
1   c   d  (c-e)
2   e   f  (e-g)
3   g   h   Nan
Run Code Online (Sandbox Code Playgroud)

我在数据帧/系列上看到了一些叫做diff的东西,但是它的含义略有不同,因为在第一个元素中会变成Nan.

exp*_*rer 97

使用班次.

df['dA'] = df['A'] - df['A'].shift(-1)
Run Code Online (Sandbox Code Playgroud)


DSM*_*DSM 36

你可以使用diff和传递-1作为periods参数:

>>> df = pd.DataFrame({"A": [9, 4, 2, 1], "B": [12, 7, 5, 4]})
>>> df["dA"] = df["A"].diff(-1)
>>> df
   A   B  dA
0  9  12   5
1  4   7   2
2  2   5   1
3  1   4 NaN

[4 rows x 3 columns]
Run Code Online (Sandbox Code Playgroud)

  • @LeoCella您可以通过不允许它们出现在列表中来管理它们。 (2认同)