Python 具有公共密钥的数据帧上序列的广播乘法

Python 具有公共密钥的数据帧上序列的广播乘法,python,pandas,Python,Pandas,我有一个数据帧和一个熊猫系列 数据帧包含我需要用来乘以序列的权重。 这两个对象共享同一个键key 下面是我拥有的数据帧(df): 下面是这个系列(s): 我不知道如何正确地将两者相乘,以便保持df的形状,并将df中的每个值乘以s中相应键上的值 所需的输出将是: Col 3 5 Key Idx2 1 1 60.57147 0.000000 4 21.20000

我有一个数据帧和一个熊猫系列

数据帧包含我需要用来乘以序列的权重。 这两个对象共享同一个键
key

下面是我拥有的数据帧(
df
):

下面是这个系列(
s
):

我不知道如何正确地将两者相乘,以便保持
df
的形状,并将
df
中的每个值乘以
s
中相应
键上的值

所需的输出将是:


Col               3         5
Key    Idx2                    
1      1      60.57147  0.000000
       4      21.20000  0.000000
       5      0.000000  24.22853
2      6      270.0000  0.000000
6      5      0.000000  0.000000
7      5      0.000000  0.000000
       6      0.000000  0.000000
8      5      0.000000  0.000000
11     2      0.000000  0.000000
12     1      0.000000  0.000000
       5      0.000000  0.000000
       6      0.000000  0.000000
       2      0.000000  0.000000
       3      0.000000  0.000000
13     2      0.000000  0.000000
14     2      0.000000  0.000000
15     2      0.000000  0.000000

我想做的是使用
df.mul
,但似乎这样我在执行一个元素对一个元素的乘法:

df.mul(s, fill_value = 0)

              1   2           3   4          5   6   ...  10  11  12  13  14  15
Key    Idx2                                          ...                        
1      1     NaN NaN  216.000000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
       4     NaN NaN   75.600000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
       5     NaN NaN    0.000000 NaN  18.285714 NaN  ... NaN NaN NaN NaN NaN NaN
2      6     NaN NaN  378.000000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
6      5     NaN NaN    0.000000 NaN  80.000000 NaN  ... NaN NaN NaN NaN NaN NaN
7      5     NaN NaN   33.352941 NaN  70.588235 NaN  ... NaN NaN NaN NaN NaN NaN
       6     NaN NaN   11.117647 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
8      5     NaN NaN  274.909091 NaN  21.818182 NaN  ... NaN NaN NaN NaN NaN NaN
11     2     NaN NaN  378.000000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
12     1     NaN NaN   60.000000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
       5     NaN NaN    0.000000 NaN  47.619048 NaN  ... NaN NaN NaN NaN NaN NaN
       6     NaN NaN    4.500000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
       2     NaN NaN    7.500000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
       3     NaN NaN   57.000000 NaN   5.079365 NaN  ... NaN NaN NaN NaN NaN NaN
13     2     NaN NaN  378.000000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
14     2     NaN NaN  378.000000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
15     2     NaN NaN  378.000000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN


对于我而言,轴=0
级别=0
参数位于:


Col               3         5
Key    Idx2                    
1      1      60.57147  0.000000
       4      21.20000  0.000000
       5      0.000000  24.22853
2      6      270.0000  0.000000
6      5      0.000000  0.000000
7      5      0.000000  0.000000
       6      0.000000  0.000000
8      5      0.000000  0.000000
11     2      0.000000  0.000000
12     1      0.000000  0.000000
       5      0.000000  0.000000
       6      0.000000  0.000000
       2      0.000000  0.000000
       3      0.000000  0.000000
13     2      0.000000  0.000000
14     2      0.000000  0.000000
15     2      0.000000  0.000000

df.mul(s, fill_value = 0)

              1   2           3   4          5   6   ...  10  11  12  13  14  15
Key    Idx2                                          ...                        
1      1     NaN NaN  216.000000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
       4     NaN NaN   75.600000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
       5     NaN NaN    0.000000 NaN  18.285714 NaN  ... NaN NaN NaN NaN NaN NaN
2      6     NaN NaN  378.000000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
6      5     NaN NaN    0.000000 NaN  80.000000 NaN  ... NaN NaN NaN NaN NaN NaN
7      5     NaN NaN   33.352941 NaN  70.588235 NaN  ... NaN NaN NaN NaN NaN NaN
       6     NaN NaN   11.117647 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
8      5     NaN NaN  274.909091 NaN  21.818182 NaN  ... NaN NaN NaN NaN NaN NaN
11     2     NaN NaN  378.000000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
12     1     NaN NaN   60.000000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
       5     NaN NaN    0.000000 NaN  47.619048 NaN  ... NaN NaN NaN NaN NaN NaN
       6     NaN NaN    4.500000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
       2     NaN NaN    7.500000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
       3     NaN NaN   57.000000 NaN   5.079365 NaN  ... NaN NaN NaN NaN NaN NaN
13     2     NaN NaN  378.000000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
14     2     NaN NaN  378.000000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN
15     2     NaN NaN  378.000000 NaN   0.000000 NaN  ... NaN NaN NaN NaN NaN NaN

df = df.mul(s, axis=0, level=0)
print (df)
                   3          5
Key Idx2                       
1   1      60.571474   0.000000
    4      21.200000   0.000000
    5       0.000000  24.228526
2   6     270.000000   0.000000
6   5       0.000000   0.000000
7   5       0.000000   0.000000
    6       0.000000   0.000000
8   5       0.000000   0.000000
11  2       0.000000   0.000000
12  1       0.000000   0.000000
    5       0.000000   0.000000
    6       0.000000   0.000000
    2       0.000000   0.000000
    3       0.000000   0.000000
13  2       0.000000   0.000000
14  2       0.000000   0.000000
15  2       0.000000   0.000000