Skip to content

Make DataFrame.pivot index argument truly optional #3962

@lodagro

Description

@lodagro

Creating a pivot table from a DataFrame is easy.

In [17]: df Out[17]: date variable value 0 2000-01-03 00:00:00 A 0.528219 1 2000-01-04 00:00:00 A -0.135071 2 2000-01-05 00:00:00 A -0.343018 3 2000-01-03 00:00:00 B -0.097701 4 2000-01-04 00:00:00 B -1.383248 In [18]: df.pivot('date', 'variable', 'value') Out[18]: variable A B date 2000-01-03 0.528219 -0.097701 2000-01-04 -0.135071 -1.383248 2000-01-05 -0.343018 NaN

However if the index has been set, and there is no column to be set as index, pivot fails. From api point of view, the index argument is optional, but in fact it is not.

In [19]: df.set_index('date', inplace=True) In [20]: df Out[20]: variable value date 2000-01-03 A 0.528219 2000-01-04 A -0.135071 2000-01-05 A -0.343018 2000-01-03 B -0.097701 2000-01-04 B -1.383248 In [21]: df.pivot(columns='variable', values='value') --------------------------------------------------------------------------- KeyError Traceback (most recent call last) ... KeyError: u'no item named None'

Of course one can reset the index before using pivot.

In [22]: df.reset_index().pivot('date', 'variable', 'value') Out[22]: variable A B date 2000-01-03 0.528219 -0.097701 2000-01-04 -0.135071 -1.383248 2000-01-05 -0.343018 NaN

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions