Although they are not supported directly, they can be achieved by tuning with indexes before trying to connect ...
-:
In [11]: ind = pd.Index([1, 2, 3])
In [12]: ind2 = pd.Index([3, 4, 5])
In [13]: ind - ind2
Out[13]: Int64Index([1, 2], dtype='int64')
| &:
In [14]: ind | ind2
Out[14]: Int64Index([1, 2, 3, 4, 5], dtype='int64')
In [15]: ind & ind2
Out[15]: Int64Index([3], dtype='int64')
, DataFrames , , :
In [21]: df = pd.DataFrame(np.random.randn(3), ind, ['a'])
In [22]: df2 = pd.DataFrame(np.random.randn(3), ind2, ['b'])
In [23]: df.reindex(ind & ind2)
Out[23]:
a
3 1.368518
, , :
In [24]: df.reindex(ind & ind2).join(df2.reindex(ind & ind2)) # equivalent to inner
Out[24]:
a b
3 1.368518 -1.335534
In [25]: df.reindex(ind - ind2).join(df2.reindex(ind - ind2)) # join on A set minus B
Out[25]:
a b
1 1.193652 NaN
2 0.064467 NaN