df2 = df1.copy()
last_column = 6
for i in map(str, list(range(3, last_column))):
    df2[i] = 0
df2 = df2[map(str, list(range(1, last_column))) + ['first', 'offset']]
Python – Pandas – Dataframe: условное смещение столбца для строки