Closed
Description
Code Sample, a copy-pastable example if possible
In [21]: df = pd.DataFrame({'k': [1, 2, 3], 'v': [4, 5, 6]})
In [22]: df.pivot_table(values='v', columns='k')
Out[22]:
k 1 2 3
v 4 5 6
In [23]: df.pivot_table(values='v', index='k')
Out[23]:
v
k
1 4
2 5
3 6
In [24]: df2 = pd.DataFrame({'k1': [1, 2, 3], 'k2': [1, 2, 3], 'v': [4, 5, 6]})
In [25]: df2.pivot_table(values='v', index=('k1','k2'))
Out[25]:
v
k1 k2
1 1 4
2 2 5
3 3 6
In [26]: df2.pivot_table(values='v', columns=('k1','k2'))
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-26-80d7fdeb9743> in <module>()
----> 1 df2.pivot_table(values='v', columns=('k1','k2'))
~\Anaconda\envs\py36\lib\site-packages\pandas\core\reshape\pivot.py in pivot_table(data, values, index, columns, aggfunc, fill_value, margins, dropna, margins_name)
172 # discard the top level
173 if values_passed and not values_multi and not table.empty and \
--> 174 (table.columns.nlevels > 1):
175 table = table[values[0]]
176
~\Anaconda\envs\py36\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
3075 if (name in self._internal_names_set or name in self._metadata or
3076 name in self._accessors):
-> 3077 return object.__getattribute__(self, name)
3078 else:
3079 if name in self._info_axis:
AttributeError: 'Series' object has no attribute 'columns'
Expected Output
No error, symmetrical between rows/columns and single/multi case
Output of pd.show_versions()
pandas 0.20.2