def create_bus(net, level, name, zone=None):
    """
    Create a bus on a given network

    :param net: the given network
    :param level: nominal pressure level of the bus
    :param name: name of the bus
    :param zone: zone of the bus (default: None)
    :return: name of the bus
    """
    try:
        assert level in net.LEVELS
    except AssertionError:
        msg = "The pressure level of the bus {} is not in {}".format(name, net.LEVELS)
        raise ValueError(msg)

    idx = len(net.bus.index)
    net.bus.loc[idx] = [name, level, zone, "NODE"]
    return name