我有一个数据框架和一个熊猫系列。
数据框包含 权重 我需要用它来乘以我的系列。Key
以下是数据框架(df
)我有。
Col 3 5
Key Idx2
1 1 0.571429 0.000000
4 0.200000 0.000000
5 0.000000 0.228571
2 6 1.000000 0.000000
6 5 0.000000 1.000000
7 5 0.088235 0.882353
6 0.029412 0.000000
8 5 0.727273 0.272727
11 2 1.000000 0.000000
12 1 0.158730 0.000000
5 0.000000 0.595238
6 0.011905 0.000000
2 0.019841 0.000000
3 0.150794 0.063492
13 2 1.000000 0.000000
14 2 1.000000 0.000000
15 2 1.000000 0.000000
这里是系列s
) :
Key
1 106.0
2 270.0
3 378.0
4 78.0
5 80.0
6 0.0
7 0.0
8 0.0
9 0.0
10 0.0
11 0.0
12 0.0
13 0.0
14 0.0
15 0.0
我不知道如何正确地将两者相乘,使我保持以下形状 df
并将每个值乘以 df
的值,以相应的 Key
在 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
解决方案:
对于我的工作 axis=0
和 level=0
中的参数 DataFrame.mul
:
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