Как определить постоянную абсолютную дельту в целых рядах? - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть целочисленный ряд следующим образом:

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 голосов
/ 05 сентября 2018

Похоже на решение Андрея, но в нем используется метод серий скользящих окон панд.

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
0 голосов
/ 05 сентября 2018

Определение непрерывного означает «последовательные различия не более 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...