def coded_to_actual(coded_data, actual_lows, actual_highs):
    """Converts a pandas DataFrame from coded units to actuals.

    :param coded_data: A pandas.Dataframe that contains the runs to convert.
    :param actual_lows: A dictionary mapping factor names to factor lows.
    :param actual_highs: A dictionary mapping factor names to factor highs.
    :returns: A pandas.DataFrame containing factor settings in actual values.
	"""
    actual_data = coded_data.copy()
    for col in actual_data.columns:
        if not (col in actual_highs and col in actual_lows):
            continue
        try:
            actual_data[col] *= 0.5 * (float(actual_highs[col]) - float(
                actual_lows[col]))
            actual_data[col] += 0.5 * (actual_highs[col] + actual_lows[col])
        except ValueError:
            actual_data[col] = actual_data[col].map({(-1): actual_lows[col],
                (1): actual_highs[col]})
    return actual_data
