Это матрица Вандермонда, в которой numpy имеет встроенную функцию для np.vander
Если у вас есть
s = pd.Series([1,2,3,4,5])
Тогда
np.vander(s, 6)
array([[ 1, 1, 1, 1, 1, 1],
[ 1, 2, 4, 8, 16, 32],
[ 1, 3, 9, 27, 81, 243],
[ 1, 4, 16, 64, 256, 1024],
[ 1, 5, 25, 125, 625, 3125]])
Чтобы добавить обратно к df
, вы можете использовать concat
df = pd.concat([df, pd.DataFrame(vander)], axis=1)