Попробуйте использовать pd.melt
.
Я взял образец размещенного вами фрейма данных и попытался получить результат. Вы можете сделать это для всех ваших столбцов:
Ниже приведен кадр данных, который я использовал:
In [970]: df
Out[970]:
Acquirer Deal_Number quarter quarter_1 quarter_2
0 Bank A 0 198109 198106 198103
1 Bank B 1 198206 198203 198112
2 Bank C 2 198306 198303 198212
In [969]: pd.melt(df,id_vars=['Deal_Number','Acquirer'], var_name='quarter', value_name="values").sort_values('Deal_Number').replace({'quarter'
...: :{'quarter':0, 'quarter_1': -1, 'quarter_2': -2, 'quarter_3': -3, 'quarter_4': -4}})
Out[969]:
Deal_Number Acquirer quarter values
0 0 Bank A 0 198109
3 0 Bank A -1 198106
6 0 Bank A -2 198103
1 1 Bank B 0 198206
4 1 Bank B -1 198203
7 1 Bank B -2 198112
2 2 Bank C 0 198306
5 2 Bank C -1 198303
8 2 Bank C -2 198212
Дайте мне знать, если это поможет.