乘以多指数Pandas系列和DataFrame

时间:2015-12-29 18:06:25

标签: python pandas

我有以下数据框:

>>> 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
>>> 

这是最好的方法吗?有没有办法在不必使用连接的情况下完成它?

1 个答案:

答案 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