Учитывая следующие данные:
data = {'a' : [1,1,1,8,8,3,3,3,3,4,4] }
df = pd.DataFrame(data)
Теперь я хотел бы сместить все это вниз на n групп, чтобы сохранить их текущий порядок. Желаемый результат для сдвига n = 1 будет следующим:
desired_output = {'a': [NaN,NaN,NaN,1,1,8,8,8,8,3,3] }
desired_output_df = pd.DataFrame(desired_output)
сдвиг n=2 должен быть:
desired_output = {'a': [NaN,NaN,NaN,NaN,NaN,1,1,1,1,8,8] }
desired_output_df = pd.DataFrame(desired_output)
Я возился с groupby/transform/apply, но пока ничего не получилось. Если я группирую, а затем сдвигаю, он сдвигает каждую группу, давая результат:
NOT_desired_output = {'a' : [NaN, 1, 1, NaN, 8, NaN, 3,3,3, NaN, 4]}
Я мог бы использовать грубую силу путем повторения, но я уверен, что есть лучшее решение. Любые идеи?