我有以下数据框:
>>> Data=pd.DataFrame(index=['A','B'], data=[[20,40],[100,300]], columns=['Var1','Var2'])
>>> Data.index.name='ID1'
>>> Data
Var1 Var2
ID1
A 20 40
B 100 300
>>>
我有以下系列:
>>> MIndex=pd.MultiIndex.from_tuples([('A',1),('B',1),('A',2),('B',3)])
>>> MultSeries=pd.Series(index=MIndex, data=[.6,.7,.4,.3])
>>> MultSeries.index.names=['ID1','ID2']
>>> MultSeries.name='MultFactor'
>>> MultSeries
ID1 ID2
A 1 0.6
B 1 0.7
A 2 0.4
B 3 0.3
Name: MultFactor, dtype: float64
>>>
我想通过系列中的相应元素将系列中的每个元素相乘。
现在我可以通过将系列转换为数据帧然后加入来实现这一点:
>>> d1=pd.DataFrame(MultSeries).join(Data)
>>> d1[['Var1','Var2']].multiply(d1['MultFactor'],axis=0)
Var1 Var2
ID1 ID2
A 1 12 24
B 1 70 210
A 2 8 16
B 3 30 90
>>>
这是最好的方法吗?有没有办法在不必使用连接的情况下完成它?
答案 0 :(得分:2)
您可以将mul
与参数level
:
In [83]: Data.mul(MultSeries, axis=0, level='ID1')
Out[83]:
Var1 Var2
ID1 ID2
A 1 12 24
B 1 70 210
A 2 8 16
B 3 30 90