@ Noname cpp
Спасибо! Хороший подход, следуя этой идее, я попытался обобщить это в функцию, но у меня есть проблема, и я не вижу решения.
Когда я запускаю функцию для более чем двух группировок строк, вывод генерирует неверно столбцы (с ненужными значениями строк).
Функция:
def move(df,row_agruped):
while row_agruped > 2:
df = move(df,2)
row_agruped = row_agruped-1
x = df
z = x.shift(-1)
num_cols = len(x.columns)
rng = range(num_cols, num_cols-1 +((num_cols)))
new_cols = ['x'+str(i) for i in rng] + ['y']
z.columns = new_cols
xt = x.iloc[:,:len(x.columns)-1]
return pd.concat([xt,z],axis=1,sort=False).iloc[:((row_agruped)-3)]
Для N = 3 функция возвращает следующее:
move(x,3)
x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 y
0 1 2 3 5.0 6.0 7.0 5.0 6.0 7.0 9.0 10.0 11.0 12
1 5 6 7 9.0 10.0 11.0 9.0 10.0 11.0 13.0 14.0 15.0 16
2 9 10 11 13.0 14.0 15.0 13.0 14.0 15.0 17.0 18.0 19.0 NaN
(Обратите внимание на ошибки в столбцах x4 == x7, x5 == x8, x6 == x9)
Но он должен вернуть это:
x1 x2 x3 x4 x5 x6 x7 x8 x9 y
0 1 2 3 5.0 6.0 7.0 9.0 10.0 11.0 12
1 5 6 7 9.0 10.0 11.0 13.0 14.0 15.0 16
2 9 10 11 13.0 14.0 15.0 17.0 18.0 19.0 NaN