Pandas 如何将多索引数据帧的值映射到具有不同形状的其他多索引数据帧?

Pandas 如何将多索引数据帧的值映射到具有不同形状的其他多索引数据帧?,pandas,replace,duplicates,multi-index,fill,Pandas,Replace,Duplicates,Multi Index,Fill,我有以下两个不同形状的多索引数据帧: 熊猫数据帧“a” col0 = ['Set 1','Set 1','Set 1','Set 1','Set 2','Set 2','Set 2','Set 2','Set 2','Set 2'] col1 = ['paa','paa','jaa','paa','jaa','jaa','jaa','paa','paa','paa'] a = pd.DataFrame(data = np.random.randint(6, size=(3, 10)), colu

我有以下两个不同形状的多索引数据帧: 熊猫数据帧“a”

col0 = ['Set 1','Set 1','Set 1','Set 1','Set 2','Set 2','Set 2','Set 2','Set 2','Set 2']
col1 = ['paa','paa','jaa','paa','jaa','jaa','jaa','paa','paa','paa']
a = pd.DataFrame(data = np.random.randint(6, size=(3, 10)), columns = [col0,col1])
输出:

    Set 1             Set 2                    
    paa paa jaa paa   jaa jaa jaa paa paa paa
0     3   0   2   1     2   0   3   5   4   3
1     2   1   2   1     0   5   5   5   3   4
2     5   2   1   2     5   1   5   5   0   2
   Set 1      Set 2     
   P1_1 P1_2  P2_1 P2_2
0     2    1     1    2
1     0    0     2    2
2     0    0     1    0
和数据帧'b'

col0 = ['Set 1','Set 1','Set 2','Set 2']
col1 = ['P1_1','P1_2','P2_1','P2_2']
b = pd.DataFrame(data = np.random.randint(3, size=(3, 4)), columns = [col0,col1])
输出:

    Set 1             Set 2                    
    paa paa jaa paa   jaa jaa jaa paa paa paa
0     3   0   2   1     2   0   3   5   4   3
1     2   1   2   1     0   5   5   5   3   4
2     5   2   1   2     5   1   5   5   0   2
   Set 1      Set 2     
   P1_1 P1_2  P2_1 P2_2
0     2    1     1    2
1     0    0     2    2
2     0    0     1    0
现在我想把两者结合起来。保留熊猫a的多重指数和熊猫b的值

熊猫“c”的期望输出:

      Set 1                   Set 2                    
      P1_1  P1_2  P1_1  P1_2  P1_1  P1_2  P1_1  P1_2  P1_1  P1_2
0     2     1     2     1     1     2     1     2     1     2
1     0     0     0     0     2     2     2     2     2     2
2     0     0     0     0     1     0     1     0     1     0
熊猫‘c’的_0级与熊猫‘b’的_0级一致。“c”中的级别_1与“b”列交替出现

您可能必须以某种方式将以下各项结合起来:

temp=b.reindex(columns=map(lambda x:(x[0],'P1_1') ,a.columns))
a.groupby(level=0, axis=1)

什么都行

Idea是匹配级别
a
b
并重复第二级列用于:



c = b.reindex(mux, axis=1)
print (c)
  Set 1                Set 2                         
   P1_1 P1_2 P1_1 P1_2  P2_1 P2_2 P2_1 P2_2 P2_1 P2_2
0     0    1    0    1     0    0    0    0    0    0
1     0    2    0    2     1    1    1    1    1    1
2     2    2    2    2     2    1    2    1    2    1