def airDensity_from_theta_v(data, units, notation=None, inplace_units=True,
    use_means=False, return_full_df=True):
    """
    Calculates moist air density using p = rho R_dry T_virtual

    Parameters
    ----------
    data: pandas.DataFrame
        data to use to calculate air density
    units: dict
        dictionary of units
    notation: pymicra.Notation
        notation to be used
    inplace_units: bool
        whether or not to update the units inplace. If False, units are returns too
    use_means: bool
        whether or not to use averages of pressure and virtual temperature, instead of the means plus fluctuations

    Returns
    -------
    
    """
    from . import algs
    from . import constants
    defs = algs.get_notation(notation)
    data = data.copy()
    if not inplace_units:
        units = units.copy()
    R_dry = constants.R_spec['dry']
    if use_means:
        data.loc[:, (defs.moist_air_mass_density)] = data[defs.pressure].mean(
            ) / (R_dry * data[defs.virtual_temp].mean())
    else:
        data.loc[:, (defs.moist_air_mass_density)] = data[defs.pressure] / (
            R_dry * data[defs.virtual_temp])
    units.update({defs.moist_air_mass_density: units[defs.pressure] / (
        constants.units['R_spec'] * units[defs.virtual_temp])})
    data = data.convert_cols({defs.moist_air_mass_density: 'kg/m**3'},
        units, inplace_units=True)
    if inplace_units:
        return data
    else:
        return data, units
