尽管不直接支持这些功能,但是可以在尝试连接之前通过调整索引来实现它们。
您可以使用
-运算符设置减号:
In [11]: ind = pd.Index([1, 2, 3])In [12]: ind2 = pd.Index([3, 4, 5])In [13]: ind - ind2Out[13]: Int64Index([1, 2], dtype='int64')
并与和设置
|交集与
&:
In [14]: ind | ind2Out[14]: Int64Index([1, 2, 3, 4, 5], dtype='int64')In [15]: ind & ind2Out[15]: Int64Index([3], dtype='int64')
因此,如果您的某些Dataframe具有这些索引,则可以 在 加入 之前 重新索引:
In [21]: df = pd.Dataframe(np.random.randn(3), ind, ['a']) # ind = df.indexIn [22]: df2 = pd.Dataframe(np.random.randn(3), ind2, ['b']) # ind2 = df2.indexIn [23]: df.reindex(ind & ind2)Out[23]: a3 1.368518
现在,您可以建立所需的任何联接:
In [24]: df.reindex(ind & ind2).join(df2.reindex(ind & ind2)) # equivalent to innerOut[24]: a b3 1.368518 -1.335534In [25]: df.reindex(ind - ind2).join(df2.reindex(ind - ind2)) # join on A set minus BOut[25]: a b1 1.193652 NaN2 0.064467 NaN



