【发布时间】:2017-03-30 13:40:13
【问题描述】:
我想将以下两个 DataFrame 与第二个 DataFrame 的 MultiIndex foreach 维度相乘
base = pd.DataFrame({'date':pd.date_range('2000-01-01', periods=3),
'id':[1,2,1],
'V1':[.3,.3,.1]}).set_index(['date','id'])
print (base)
V1
date id
2000-01-01 1 0.3
2000-01-01 2 0.1
2000-01-02 1 0.3
2000-01-02 2 0.1
ref = pd.DataFrame({'1':[1,2],'2':[1,2]}, index=[1,2])
ref.index.name = 'id'
print (ref)
1 2
id
1 2 1
2 1 2
然后存档:
V1
date id
2000-01-01 1 (2*0.3 + 1*0.1)
2000-01-01 2 (2*0.1 + 1*0.3)
2000-01-01 1 (2*0.3 + 1*0.1)
2000-01-01 2 (2*0.1 + 1*0.3)
我用这段代码试了一下(foreach id):
base.unstack(level='id').apply(lambda x: np.asarray(x) * np.asarray(ref.loc[??]), axis=1).stack().groupby(level='date').sum()
【问题讨论】: