Skip to content

Feature request Multi Index pivot #32129

Closed
@kirialis

Description

@kirialis

Hi, Would it be possible to implement pivot with a list of index ?

This will throw an error :

df.pivot(index=['time', 'category'], columns='bar', values='baz')

But this does : (Found on Stack Overflow)

def multiindex_pivot(df, index=None, columns=None, values=None):
    if index is None:
        names = list(df.index.names)
        df = df.reset_index()
    else:
        names = index
    list_index = df[names].values
    tuples_index = [tuple(i) for i in list_index] # hashable
    df = df.assign(tuples_index=tuples_index)
    df = df.pivot(index="tuples_index", columns=columns, values=values)
    tuples_index = df.index  # reduced
    index = pd.MultiIndex.from_tuples(tuples_index, names=names)
    df.index = index
    return df

df.pipe(multiindex_pivot, index=['time', 'category'], columns='bar', values='baz')

I just think it would be nice to have something directly available :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Duplicate ReportDuplicate issue or pull requestReshapingConcat, Merge/Join, Stack/Unstack, Explode

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions