def remove_features(s, features):
    """Remove features from records.

    Parameters
    ----------
    s : pandas.Series
        Records of feature subsets.
    features : list[str]
        Names of removed features.

    Returns
    -------
    pandas.Series
        New records.

    Raises
    ------
    ValueError
        If a feature in ``features`` does not exist.

    See also
    --------
    subrela.records.add_features : Add features to records.

    Notes
    -----
    A record using a removed feature is dropped.

    Examples
    --------
    >>> s = from_arrays([[True, False, False], [True, False, True]],
    ...                 [0.2, 0.8],
    ...                 features=['A', 'B', 'C'])
    >>> s
    A     B      C    
    True  False  False    0.2
                 True     0.8
    dtype: float64
    >>> remove_features(s, ['B'])
    A     C    
    True  False    0.2
          True     0.8
    dtype: float64

    >>> remove_features(s, ['B', 'C'])
    A
    True    0.2
    dtype: float64
    """
    for feature in features:
        if feature not in s.index.names:
            raise ValueError("feature '{}' does not exist".format(feature))

    flags = s.index.to_frame().astype(bool)
    conds = (~flags[list(features)]).all(axis="columns")
    s = s[conds]

    s = s.droplevel(features)

    return s