Alternating date columns and value in between to stacked data

I have some records that look like this (there are more columns to the right)

INSTALL METER_NO    Field3  Field4  Field5  Field6  Field7  Field8  Field9  Field10 Field11 Field12 Field13
80000000    19151882    1-Jan-18    5.6 1-Dec-17    7.9 1-Nov-17    5.5 1-Oct-17    4.4 1-Sep-17    6.1 1-Aug-17
80000001    31692087    1-Jan-18    55.5    1-Dec-17    62.7    1-Nov-17    2.2 1-Oct-17    2   1-Sep-17    9.3 1-Aug-17
80000003    MISSING 1-Jan-18    0   1-Dec-17    0   1-Nov-17    0   1-Oct-17    0   1-Sep-17    0   1-Aug-17
80000004    98914998    1-Jan-18    8.6 1-Dec-17    19.4    1-Nov-17    7.5 1-Oct-17    5.4 1-Sep-17    6.8 1-Aug-17
80000005    48962501    1-Jan-18    1   1-Dec-17    1.3 1-Nov-17    1.8 1-Oct-17    1.7 1-Sep-17    2.7 1-Aug-17
80000006    14954563    1-Jan-18    0   1-Dec-17    0   1-Nov-17    0   1-Oct-17    0   1-Sep-17    0   1-Aug-17

I need to get them into this format:

Install Meter_NO    From    To  Consumption
80000000    19151882    8/1/2017    9/1/2017    6.1
80000000    19151882    9/1/2017    10/1/2017   4.4
80000000    19151882    10/1/2017   11/1/2017   5.5
80000000    19151882    11/1/2017   12/1/2017   7.9
80000000    19151882    12/1/2017   1/1/2018    5.6
....

I am using this code which works fine:

df_list = []

# Dates are stored in these column numbers 
date_cols = np.arange(2,51,2).tolist()

labels = ['Install', 'Meter_NO', 'From', 'To', 'Consumption']
for records in df.itertuples(index=False):
    install = records[0]
    data_ = []
    for col in date_cols:
        if col >= 4:
            data_.append((records[0], records[1], records[col], records[col-2], records[col-1]))
    df_temp = pd.DataFrame.from_records(data_, columns=labels)
    df_list.append(df_temp)

df_stacked = pd.concat(df_list)

Is there a better way to do this?