Closed
Description
Doing a crosstab on two Series with the same name throws an error. This is due to a dictionary (indexed by the series name) in the crosstab function being used to store the data. Not sure if this is a feature or a bug, but a default similar to the behavior when Series without name are compared would be desirable to me.
In [56]:
s1 = pd.Series([1,1,2,2,3,3], name='s')
s2 = pd.Series([1,1,1,2,2,2], name='s')
pd.crosstab(s1, s2)
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-56-9d16b2abac9f> in <module>()
2 s2 = pd.Series([1,1,1,2,2,2], name='s')
3
----> 4 pd.crosstab(s1, s2)
/cellar/users/agross/anaconda2/lib/python2.7/site-packages/pandas-0.13.0_247_g82bcbb8-py2.7-linux-x86_64.egg/pandas/tools/pivot.pyc in crosstab(rows, cols, values, rownames, colnames, aggfunc, margins, dropna)
368 df['__dummy__'] = 0
369 table = df.pivot_table('__dummy__', rows=rownames, cols=colnames,
--> 370 aggfunc=len, margins=margins, dropna=dropna)
371 return table.fillna(0).astype(np.int64)
372 else:
/cellar/users/agross/anaconda2/lib/python2.7/site-packages/pandas-0.13.0_247_g82bcbb8-py2.7-linux-x86_64.egg/pandas/tools/pivot.pyc in pivot_table(data, values, rows, cols, aggfunc, fill_value, margins, dropna)
108 to_unstack = [agged.index.names[i]
109 for i in range(len(rows), len(keys))]
--> 110 table = agged.unstack(to_unstack)
111
112 if not dropna:
/cellar/users/agross/anaconda2/lib/python2.7/site-packages/pandas-0.13.0_247_g82bcbb8-py2.7-linux-x86_64.egg/pandas/core/frame.pyc in unstack(self, level)
3339 """
3340 from pandas.core.reshape import unstack
-> 3341 return unstack(self, level)
3342
3343 #----------------------------------------------------------------------
/cellar/users/agross/anaconda2/lib/python2.7/site-packages/pandas-0.13.0_247_g82bcbb8-py2.7-linux-x86_64.egg/pandas/core/reshape.pyc in unstack(obj, level)
416 def unstack(obj, level):
417 if isinstance(level, (tuple, list)):
--> 418 return _unstack_multiple(obj, level)
419
420 if isinstance(obj, DataFrame):
/cellar/users/agross/anaconda2/lib/python2.7/site-packages/pandas-0.13.0_247_g82bcbb8-py2.7-linux-x86_64.egg/pandas/core/reshape.pyc in _unstack_multiple(data, clocs)
275 index = data.index
276
--> 277 clocs = [index._get_level_number(i) for i in clocs]
278
279 rlocs = [i for i in range(index.nlevels) if i not in clocs]
/cellar/users/agross/anaconda2/lib/python2.7/site-packages/pandas-0.13.0_247_g82bcbb8-py2.7-linux-x86_64.egg/pandas/core/index.pyc in _get_level_number(self, level)
2197 except ValueError:
2198 if not isinstance(level, int):
-> 2199 raise KeyError('Level %s not found' % str(level))
2200 elif level < 0:
2201 level += self.nlevels
KeyError: 'Level s not found'