<h4 dir="auto">Code Sample, a copy-pastable example if possible</h4>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="s1=pd.Series([True,False,True,True])
s2=pd.Series([True,True,False])

s1.index=pd.MultiIndex.from_tuples( [(0, 2), (1, 1), (1, 2), (2, 1)],names=['st', 'at'])
s2.index=pd.Index([0,1,2], name='st')

ds1=pd.DataFrame(s1)
ds2=pd.DataFrame(s2)

s3=pd.Series([True,False,True])
s4=pd.Series([True,True,False])"><pre class="notranslate"><code class="notranslate">s1=pd.Series([True,False,True,True])
s2=pd.Series([True,True,False])

s1.index=pd.MultiIndex.from_tuples( [(0, 2), (1, 1), (1, 2), (2, 1)],names=['st', 'at'])
s2.index=pd.Index([0,1,2], name='st')

ds1=pd.DataFrame(s1)
ds2=pd.DataFrame(s2)

s3=pd.Series([True,False,True])
s4=pd.Series([True,True,False])
</code></pre></div>
<h4 dir="auto">Expected Output</h4>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="st  at
0   2      True
1   1     False
1   2      True
2   1     False
dtype: bool"><pre class="notranslate"><code class="notranslate">st  at
0   2      True
1   1     False
1   2      True
2   1     False
dtype: bool
</code></pre></div>
<p dir="auto">For series, <code class="notranslate">*</code> and <code class="notranslate">&amp;</code> give different result:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="In: s1 &amp; s2
Out: 
st  at
0   2     False
1   1     False
1   2     False
2   1     False
dtype: bool

In: s1 * s2
Out: 
st  at
0   2      True
1   1     False
1   2      True
2   1     False
dtype: bool"><pre class="notranslate"><code class="notranslate">In: s1 &amp; s2
Out: 
st  at
0   2     False
1   1     False
1   2     False
2   1     False
dtype: bool

In: s1 * s2
Out: 
st  at
0   2      True
1   1     False
1   2      True
2   1     False
dtype: bool
</code></pre></div>
<p dir="auto">BUT for dataframes they give the same:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="In: ds1 * ds2
Out: 
           0
st at       
0  2    True
1  1   False
1  2    True
2  1   False

In: ds1 &amp; ds2
Out: 
           0
st at       
0  2    True
1  1   False
1  2    True
2  1   False"><pre class="notranslate"><code class="notranslate">In: ds1 * ds2
Out: 
           0
st at       
0  2    True
1  1   False
1  2    True
2  1   False

In: ds1 &amp; ds2
Out: 
           0
st at       
0  2    True
1  1   False
1  2    True
2  1   False
</code></pre></div>
<p dir="auto">and last for series with single index, also both <code class="notranslate">s3 &amp; s4</code> or <code class="notranslate">s3 * s4</code> give:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="0     True
1    False
2    False
dtype: bool"><pre class="notranslate"><code class="notranslate">0     True
1    False
2    False
dtype: bool
</code></pre></div>
<h4 dir="auto">output of <code class="notranslate">pd.show_versions()</code></h4>
<p dir="auto">pandas: 0.18.1</p>
<p dir="auto">Something seems to be wrong with s1 == s2 when s1 and s2 don't have the same index. Here is a snippet example:</p>
<div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="import operator
import pandas
s1 = pandas.Series([1,2], ['a','b'])
s2 = pandas.Series([2,3], ['b','c'])
s1 == s2
s2 == s1"><pre class="notranslate"><span class="pl-k">import</span> <span class="pl-s1">operator</span>
<span class="pl-k">import</span> <span class="pl-s1">pandas</span>
<span class="pl-s1">s1</span> <span class="pl-c1">=</span> <span class="pl-s1">pandas</span>.<span class="pl-v">Series</span>([<span class="pl-c1">1</span>,<span class="pl-c1">2</span>], [<span class="pl-s">'a'</span>,<span class="pl-s">'b'</span>])
<span class="pl-s1">s2</span> <span class="pl-c1">=</span> <span class="pl-s1">pandas</span>.<span class="pl-v">Series</span>([<span class="pl-c1">2</span>,<span class="pl-c1">3</span>], [<span class="pl-s">'b'</span>,<span class="pl-s">'c'</span>])
<span class="pl-s1">s1</span> <span class="pl-c1">==</span> <span class="pl-s1">s2</span>
<span class="pl-s1">s2</span> <span class="pl-c1">==</span> <span class="pl-s1">s1</span></pre></div>
<p dir="auto">with the output:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="InIn [5]: s1 == s2
Out[5]: 
a    False
b    False

In [6]: s2 == s1
Out[6]: 
b    False
c    False"><pre class="notranslate"><code class="notranslate">InIn [5]: s1 == s2
Out[5]: 
a    False
b    False

In [6]: s2 == s1
Out[6]: 
b    False
c    False
</code></pre></div>
<p dir="auto">On the other hand using combine works fine:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="In [7]: s1.combine(s2, operator.eq)
Out[7]: 
a    0
b    1
c    0

In [8]: s2.combine(s1, operator.eq)
Out[8]: 
a    0
b    1
c    0"><pre class="notranslate"><code class="notranslate">In [7]: s1.combine(s2, operator.eq)
Out[7]: 
a    0
b    1
c    0

In [8]: s2.combine(s1, operator.eq)
Out[8]: 
a    0
b    1
c    0
</code></pre></div>
<p dir="auto">I guess you can first align s1 and s2 and then compare them, but is there a good reason why this couldn't work out of the box?</p>
<p dir="auto">There doesn't seem to be any tests for pandas.Series. <strong>eq</strong> for two series with a different index in pandas/pandas/tests/test_series.py. I have a patch lying around to add such a test and I could commit it if that's useful.</p>