Issue 1:
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'

Issue 2:
Pandas 0.10.1.

It's throwing a FutureWarning "set_index with inplace=True will return None from pandas 0.11 onward" when I call set_index, _even though I already changed my code to be compliant with that change so the warning is not relevant_. It prints that warning anytime you call the function with inplace=True even if you are not using the return value. As it stands, the warning is largely useless -- if I call set_index in 20 places and I fixed 19 of them to not use the return code but missed the last one; then the warning is thrown on the first call (which I fixed) but not on the 20th call (which I didn't fix), so it doesn't help anyone find places to fix in their code.

This warning is "harmless" in the sense it doesn't crash my code; but it is harmful in the sense that it clutters my error/warning log and therefore causing false positives in our infrastructure to notify us on job warnings/errors.

Ideally, pandas should only print the warning if its relevant to you (IE, you haven't yet fixed your code) but I realize that's hard. If that's not possible, then can we have some sort of global option to disable that warning?