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