2016-11-05 12 views
1

pandasの列名を持つピボットテーブルを使用するときに問題があります。ここpandasピボットテーブル:行の合計で除算するときの問題

私の問題

from collections import OrderedDict 
import pandas as pd 


table = OrderedDict((
("Item", ['Item0', 'Item0', 'Item1', 'Item1']), 
('CType',['Gold', 'Bronze', 'Gold', 'Silver']), 
('USD', [1, 2, 3, 4]), 
('EU', [1, 2, 3, 4]) 
)) 
d = pd.DataFrame(table) 

print d 

p = d.pivot_table(index='Item', columns='CType', values='USD') 
print p 

p.fillna(0, inplace=True) 
print p 

次の操作は、奇妙な形で私はNaNを与えます。 私は何が欠けていますか?

p/p.sum(axis = 1) 

PS:データの例はhereから取られているが、私自身のデータではなく

答えて

3

使用DF.div同じ挙動を示す:afore-で

p.div(p.sum(1), 0) 

enter image description here

axis=1を上記の方法は、前に行ったやり方と同様に動作し、結果はすべてです210。

axis=0を入力して、行ごとに(インデックスに沿って)計算する必要があります。

+1

Nickilさんに感謝します。これは素晴らしいことであり、期待どおりに動作します。しかし、ピボット操作に由来する「名前付き列」をどのように処理するかについてはまだ疑問に思っています。別の質問を投稿する – user1043144

関連する問題