Pandas pivot_table fails with columns and margin

Viewed 356

I'm getting a KeyError: "... not in index" while using pivot_table of pandas. Here is sample code:

arrays = [['bar', 'bar', 'foo', 'foo'],
          ['one', 'two', 'one', 'two'], ['A','A','B','B']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second', 'third'])
values = np.array([[1,2,3,4],[5,6,7,8]])
df = pd.DataFrame(values.T, index=index, columns = ['0', '1'])

# here comes the pivot_table, this one works, it has 'colums'
df.pivot_table(index = ['first', 'second'],  columns = 'third', aggfunc = 'sum')

#this one works, it has 'margins'
df.pivot_table(index = ['first', 'second'],  aggfunc = 'sum', margins=True)

#this one fails, it has both 'columns' and 'margins'
df.pivot_table(index = ['first', 'second'],  columns = 'third', aggfunc = 'sum', margins=True)

KeyError Traceback (most recent call last)
...
KeyError: "['first' 'second'] not in index"

Somehow columns and margins are not compatible.

1 Answers

As Asish mentioned, performing a reset_index() before calling .pivot_table will do the work.

The problem was raised in pandas GitHub Issues and one can follow all the updates here.

Related