BUG/API: pivot_table with multi-index columns only · Issue #17038 · pandas-dev/pandas (original) (raw)
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) in () ----> 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