Scheibe pandas DataFrame durch MultiIndex Ebene oder Unterebene

Inspiriert von diese Antwort und der Mangel an eine einfache Antwort auf diese Frage ich fand mich schriftlich ein wenig syntaktischer Zucker, um das Leben einfacher zu filtern MultiIndex Ebene.

def _filter_series(x, level_name, filter_by):
    """
    Filter a pd.Series or pd.DataFrame x by `filter_by` on the MultiIndex level
    `level_name`

    Uses `pd.Index.get_level_values()` in the background. `filter_by` is either
    a string or an iterable.
    """
    if isinstance(x, pd.Series) or isinstance(x, pd.DataFrame):
        if type(filter_by) is str:
            filter_by = [filter_by]

        index = x.index.get_level_values(level_name).isin(filter_by)
        return x[index]
    else:
        print "Not a pandas object"

Aber wenn ich weiß das die pandas development team (und ich fange an, langsam!) dort gibt es bereits einen schönen Weg, dies zu tun, und ich weiß einfach nicht, was es noch!

Habe ich Recht?

InformationsquelleAutor LondonRob | 2014-04-10
Schreibe einen Kommentar