Я пытаюсь выяснить, присутствуют ли 3 или более вхождений любого последовательного числа в столбце, и, если это так, пометить последний с 1, а остальные с нулями.
df['a'] = df.assign(consecutive=df.Count.groupby((df.Count != df.Count.shift()).cumsum()).transform('size')).query('consecutive > @threshold')
вот что я нашел здесь: Идентификация последовательных вхождений значения однако это дает мне ошибку: ValueError: Wrong number of items passed 6, placement implies 1.
Я понимаю проблему, что это не может быть напечатано в кадре данных, но каков будет правильный подход для получения это желаемый результат?
Во-вторых, если это условие выполнено, я хотел бы выполнить уравнение (например, 2 * b) для нескольких строк, соседних (либо предыдущих, либо последующих результатов) с 1 (подобно функции сдвига, но затем повторяющихся, например, для 3 предыдущих строк ). Я совершенно уверен, что это должно быть возможно, но я не смог заставить эту цель работать. Оно не обязательно должно основываться на том, что указано в столбце с, это всего лишь предложение.
небольшая выдержка из данных ниже для интерпретации, столбцы c и d представляют желаемый результат:
a b c d
16215 2 0 0
24848 4 0 0
24849 4 0 8
24850 4 0 8
24851 4 1 8
24852 6 0 0
24853 6 0 0
24854 8 0 0
24855 8 0 0
24856 8 0 16
25208 8 0 16
25932 8 1 16
28448 10 0 0
28449 10 0 0
28450 10 0 0