我的整数序列如下:
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不是?
答案 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
。