2017-02-26 34 views
0

我想乘以一個DataFrame與系列,其中DataFrame具有完全相同的系列索引,儘管有重複的索引值。期望的結果是DataFrame中的每一行都會根據索引的值乘以Series中的相應值。乘以一個DataFrame與重複的索引值

乘以重複的索引值的一系列完美的作品:

import pandas as pd 
weights = pd.Series([10, 100], [0, 1]) 
s = pd.Series([1, 2, 3, 4], [0, 0, 1, 1]) 
s.mul(weights) 

產生預期的結果:

0  10 
0  20 
1 300 
1 400 

乘以重複的索引值的數據幀,但是,產生ValueError異常:不能重新編制來自複製軸

df = pd.DataFrame({'a': [1, 2, 3, 4], 'b': [-1, -2, -3, -4]}, [0, 0, 1, 1]) 
df.mul(weights, axis=0) 
... 
ValueError: cannot reindex from a duplicate axis 

我如何獲得以下結果?

 a b 
0 10 -10 
0 20 -20 
1 300 -300 
1 400 -400 

編輯:

一種選擇是第一系列重新索引權重:

df.mul(weights.reindex(df.index, method='ffill'), axis=0) 

回答

1

如何使用apply方法,以便您可以通過列乘數據幀列?

df.apply(lambda col: col.mul(weights)) 

#  a b 
#0 10 -10 
#0 20 -20 
#1 300 -300 
#1 400 -400 
相關問題