这是使用 diff() 和 abs() 方法解决此类问题的另一种方法:
>>> # Suppose we have the following data:
>>> import numpy as np
>>> import pandas as pd
>>> np.random.seed(1234) # make the following line reproducible
>>> N = 100
>>> # A random data for x and y column
>>> x = np.random.randn(N)
>>> y = np.random.randn(N)
>>> # Let construct a dataframe
>>> df = pd.DataFrame({"x": x, "y": z})
>>> # We can apply the diff method to the y-column
>>> dy = df["y"].diff()
打印后,我们得到:
>>> dy
0 NaN
1 0.275328
2 -0.062942
3 -0.218296
4 0.198992
...
95 -1.535901
96 0.270413
97 1.050294
98 -0.600781
99 -1.339916
Name: y, Length: 100, dtype: float64
绝对值可以如下计算:
>>> dy_absval = dy.abd()
>>> dy_absval
0 NaN
1 0.275328
2 0.062942
3 0.218296
4 0.198992
...
95 1.535901
96 0.270413
97 1.050294
98 0.600781
99 1.339916
Name: y, Length: 100, dtype: float64
请注意,我们可以链接 diff() 和 abs() 以获得 dy_absval,方法是编写 dy_absval = df["y"].diff().abs()
如果你想处理最终结果中出现的 NaN,你可以dop它或用适当的值填充它的位置(比如:0.0 )。这意味着,写作:
>>> dy_absval = df["y"].diff().abs().dropna()
>>> # or
>>> dy_absval = df["y"].diff().abs().fillna(0.0)