stacked_col_names = ['TDR1', 'TDR2', 'TDR3', 'TDR4']
repeated_row_indexes = np.repeat(np.arange(df.shape[0]), 4)
repeated_col_indexes = [np.where(df.columns == c)[0][0] for c in
    stacked_col_names]
destacked_tdrs = pd.DataFrame(data=df.values[repeated_row_indexes,
    repeated_col_indexes], index=df.index[repeated_row_indexes], columns=[
    'TDR'])
ouput = pd.merge(left_index=True, right_index=True, left=df, right=
    destacked_tdrs)
Эффективно расширяйте строки из pandas DataFrame