2017-05-13 9 views
2

で複数の列を掛けると、私は、このデータフレームマルチインデックス列内の同じ単一の列パンダ

col = pd.MultiIndex.from_arrays([['Jan', 'Jan', 'Jan', 'Cost'], 
           ['WK1', 'WK2', 'WK3', 'Cost']]) 
data = pd.DataFrame(np.random.randn(4, 4), columns=col) 
data 

を持っていると私は私がこの

ようにそれを試してみましたので、コストを月内のすべての列を乗算したいです
data[['Jan']] * data[['Cost']] 

しかし、私の値はNanで埋められます。私はこれを行う方法がありますか?

答えて

2

私はあなたがmulDataFrameを選択するための[]を取り外す必要があると思う:

print (data['one'].mul(data['two'])) 

または:

print (data['one'] * data['two']) 

も可能利用機能xsです:

print (data.xs('one', axis=1, level=0) * data.xs('two', axis=1, level=0)) 
0

何私ができるから、あなたが問題を抱えていると思う複数レベルのインデックスを使用して列を処理します。これはあなたがやろうとしていることですか?

data[('one','a')] * data[('two','b')] 
Out[1065]: 
0 0.528834 
1 -0.287322 
2 -0.255244 
3 0.871213 
dtype: float64 
0

こんにちはみんなは、私は私の質問に答えるために、サイクルのために作られた

for col in data['Jan']: 
data[('Jan', col)] = data[('Jan',col)] * data[('Cost','Cost')] 

ホープ誰かが私に私が

を向上させることができるものでフィードバックを与えることができます
関連する問題