def weighted_avg(df, col, weight_col='vol', epsilon=0):
    """find weighted_avg of col values based on weights from weight_col
    Args:
        df: (pd.DataFrame) data that has col and weight_col
        col: (str) name of the column which will be averaged
        weight_col: (str) name of the column which will be used as weights
        epsilon: (float) value to add to weights to ensure not zero
    """
    df[weight_col] += epsilon
    return (df[col] * df[weight_col]).sum() / df[weight_col].sum()
