如何检测整数级数中的常数绝对增量?



我有如下整数序列:

data1 = [1, 2, 3, 4, 3, 2, 1, 2, 1, 1]
data2 = [4, 0, 0, 0, 8, 0, 0, 0]

我们可以看到data1似乎是"连续的",而data2不是,因为data1的最大常数绝对增量为 1。

如何使用 Pandas 确定data1是"连续的",而 data2 不是?

类似于安德烈的解决方案,但这利用了熊猫的滚动窗口系列方法。

data1.rolling(2).apply(lambda x: abs(np.diff(x)) <= 1).all()
>>> True
data2.rolling(2).apply(lambda x: abs(np.diff(x)) <= 1).all()
>>> False

将连续定义为表示"连续差异的绝对值最多为 1"。要检测这一点,您可以使用.diff()

In [1]: series1, series2 = pd.Series(data1), pd.Series(data2)
In [2]: series1.diff().fillna(0).abs().max()
Out[2]: 1.0
In [3]: series2.diff().fillna(0).abs().max()
Out[3]: 8.0

所以series1.diff().fillna(0).abs().max() <= 1将评估为Trueseries2.diff().fillna(0).abs().max() <= 1将评估为False

最新更新