Pandas 多个数据帧部分共享索引的操作

Pandas 多个数据帧部分共享索引的操作,pandas,dataframe,multi-index,Pandas,Dataframe,Multi Index,我有两个数据帧:(I)一个有两个索引和两个标头,(ii)另一个有一个索引和一个标头。第一数据帧中每个轴的第二级与第二数据帧的每个轴相关。我需要根据轴之间的关系将两个数据帧相乘 数据帧1: 数据帧2: 预期结果(与索引/标题相乘): 尝试使用级别参数: import pandas as pd df = pd.DataFrame([[9,10,2,1,6,5], [4, 0,3,4,6,6], [9, 3,9,1,2,

我有两个数据帧:(I)一个有两个索引和两个标头,(ii)另一个有一个索引和一个标头。第一数据帧中每个轴的第二级与第二数据帧的每个轴相关。我需要根据轴之间的关系将两个数据帧相乘

数据帧1:

数据帧2:

预期结果(与索引/标题相乘):

尝试使用
级别
参数:

import pandas as pd

df = pd.DataFrame([[9,10,2,1,6,5],
                   [4, 0,3,4,6,6],
                   [9, 3,9,1,2,3],
                   [3, 5,9,3,9,0],
                   [4,4,8,5,10,5],
                   [5, 3,1,8,5,6]])

df.columns = pd.MultiIndex.from_arrays([[2020]*3+[2021]*3,[1,2,3,1,2,3]])

df.index = pd.MultiIndex.from_arrays([[1]*3+[2]*3,[1,2,3,1,2,3]])

print(df)
print('\n')
df2 = pd.DataFrame([[.1,.3,.6],[.4,.4,.3],[.5,.4,.1]], index=[1,2,3], columns=[1,2,3])

print(df2)
print('\n')
df_out = df.mul(df2, level=1)

print(df_out)
输出:

   2020        2021       
       1   2  3    1   2  3
1 1    9  10  2    1   6  5
  2    4   0  3    4   6  6
  3    9   3  9    1   2  3
2 1    3   5  9    3   9  0
  2    4   4  8    5  10  5
  3    5   3  1    8   5  6


     1    2    3
1  0.1  0.3  0.6
2  0.4  0.4  0.3
3  0.5  0.4  0.1


    2020           2021          
       1    2    3    1    2    3
1 1  0.9  3.0  1.2  0.1  1.8  3.0
  2  1.6  0.0  0.9  1.6  2.4  1.8
  3  4.5  1.2  0.9  0.5  0.8  0.3
2 1  0.3  1.5  5.4  0.3  2.7  0.0
  2  1.6  1.6  2.4  2.0  4.0  1.5
  3  2.5  1.2  0.1  4.0  2.0  0.6

图像样本无法复制和粘贴,因此不容易重新创建。请阅读关于如何发布可复制的
pandas
示例的文章。