def get_offer_stat(customers, stat, offer):
    """ Get any column for customers that received but not viewed an offer,
    viewed but not completed the offer, and those that viewed and completed
    the offer
    Input:
    - customers: dataframe with aggregated data of the offers
    - stat: column of interest
    - offer: offer of interest
    Output:
    - (received, viewed, completed): tuple with the corresponding column
    """
    valid = (customers.valid == 1)
    rcv_col = '{}_received'.format(offer)
    vwd_col = '{}_viewed'.format(offer)
    received = valid & (customers[rcv_col] > 0) & (customers[vwd_col] == 0)
    cpd = None
    if offer not in ['informational', 'I1', 'I2']:
        cpd_col = '{}_completed'.format(offer)
        viewed = valid & (customers[vwd_col] > 0) & (customers[cpd_col] == 0)
        completed = valid & (customers[vwd_col] > 0) & (customers[cpd_col] > 0)
        cpd = customers[completed][stat]
    else:
        viewed = valid & (customers[vwd_col] > 0)

    return customers[received][stat], customers[viewed][stat], cpd