Python 如何检查数据帧多索引子集之间的相等性?

Python 如何检查数据帧多索引子集之间的相等性?,python,pandas,dataframe,Python,Pandas,Dataframe,假设我有两个数据帧df1和df2,每个数据帧都有一个多索引。第一个多索引列是['A'、'B'、'C'、'D'],第二个['A'、'B'] 我想获取包含df1行的数据帧df,其中df1[['A','B']==df2[['A','B']]。当['A','B']是my df的某些列时,此语法有效,但当['A','B']在索引中时,此语法无效。(我宁愿避免df.reset\u index()) 以下是最简单的示例: L = ([["foo","blih",23,1], ["foo","blah

假设我有两个数据帧
df1
df2
,每个数据帧都有一个多索引。第一个多索引列是
['A'、'B'、'C'、'D']
,第二个
['A'、'B']

我想获取包含
df1
行的数据帧
df
,其中
df1[['A','B']==df2[['A','B']]
。当
['A','B']
是my df的某些列时,此语法有效,但当
['A','B']
在索引中时,此语法无效。(我宁愿避免
df.reset\u index()

以下是最简单的示例:

L = ([["foo","blih",23,1],
     ["foo","blah",2,13],
     ["bar","blih",1,23],
     ["bar","blah",2,31]])

example = pd.DataFrame(L,columns = ["A","B","value1","value2"])
L2 = ([["blih",23,1],
      ["blih",1,23]])
example2 = pd.DataFrame(L2,columns = ["B","value1","value2"])
example = example.set_index(["A","B"])
example2 = example2.set_index(["B"])
以下是数据帧
示例

          value1  value2
A   B                
bar blih       1      23
    blah       2      31
foo blih      23       1
    blah       2      13
示例2

      value1  value2
B                
blih      23       1
blih       1      23
预期输出:示例
的行,其中
示例['B']==example2['B']

          value1  value2
A   B                
bar blih       1      23
foo blih      23       1

您希望匹配多个列值,其中一些列值在索引中,而另一些列值不在索引中
DataFrame.merge
确实是您想要的

example.reset_index().merge(example2).set_index(['A', 'B'])
输出:

          value1  value2
A   B                   
bar blih       1      23
foo blih      23       1
需要在左侧数据框
上重置索引的唯一原因是合并不会为非键的索引列保留多索引。就是

example.merge(example2, on=['B', 'value1', 'value2']) 
产出:

      value1  value2
B                   
blih      23       1
blih       1      23

你能添加一些数据样本吗?我添加了一个最小的示例OK,预期的输出是什么?当然,没有符合该条件的行,但你已经知道了。哦,抱歉,小错误,我正在查找
example['B']==example2['B']
的行!修好了。我还把我想要的精确化为输出