Published April 2, 2026 | Version v1
Dataset Open

ReEDS: Hourly average state temperatures

Authors/Creators

  • 1. ROR icon National Renewable Energy Laboratory

Description

This record provides hourly modeled surface air temperature in degrees Celsius for the 48 states in the contiguous United States (U.S.) from 1998–2024, retrieved from the National Solar Radiation Database (NSRDB) and originally generated using the NASA MERRA-2 model. These data are used in the Regional Energy Deployment System (ReEDS) model.

Temporal resolution

Data are at hourly resolution in Coordinated Universal Time (UTC) and represent instantaneous values on the hour [°C]. The profiles span the 27 weather years from 1998–2024.

Spatial resolution

48 profiles are provided, one for each of the 48 states in the contiguous United States. Data in the NSRDB are provided on a roughly 4 km grid and the original temperature data from MERRA-2 are on a roughly 50 km grid; here, we provide the simple unweighted average over all NSRDB grid sites in each of the 48 states.

File structure

Data are saved as Hierarchical Data Format (HDF5) files. The following Python function can be used to read the .h5 file into a pandas dataframe:

import h5py
import pandas as pd

def read_temperatures(filepath):
    """
    Read temperatures from `filepath` and return a pandas dataframe.

    Usage:
    `df = read_profile('/path/to/temperature_state.h5')`
    """
    encoding = 'utf-8'
    _temperatures = {}
    with h5py.File(filepath, 'r') as f:
        years = [int(i) for i in list(f) if i.isdigit()]
        for year in years:
            timeindex = pd.to_datetime(
                pd.Series(f[f"index_{year}"][:])
                .str.decode(encoding)
            )
            _temperatures[year] = pd.DataFrame(
                index=timeindex,
                columns=pd.Series(f['columns']).str.decode(encoding),
                data=f[str(year)],
            )

    temperatures = (
        pd.concat(_temperatures, names=('y','datetime')).rename_axis(columns='state')
        .reset_index('y', drop=True)
        .tz_localize('UTC')
    )

    return temperatures

Files

Files (47.6 MB)

Name Size Download all
md5:43f69d6216f209082417b558e74bd349
47.6 MB Download