如何检测整数序列中的恒定绝对增量?

时间:2018-09-05 03:40:42

标签: pandas

我的整数序列如下:

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不是?

2 个答案:

答案 0 :(得分:2)

类似于Andrey的解决方案,但这利用了熊猫的滚动窗口序列方法。

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 :(得分:1)

将连续定义为“连续差异的绝对值最大为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的评估结果为True,而series2.diff().fillna(0).abs().max() <= 1的评估结果为False