2016-03-21 8 views
0

データから行列を得るためにパンダまたはPythonコードを書くにはどうすればよいですか?私は、次の表を持っている:パンダまたはPythonを使用してデータから行列を取得する

Item Route Order 
R124 A1 1 
R124 A2 2 
R124 A3 3 
R124 A4 4 
R124 A4 4 
R126 A5 1 
R126 A6 2 
R126 A7 3 
R126 A7 3 

私に必要な出力は次のとおりです。

A1 A2 A3 A4 A5 A6 A7 
R124 1 1 1 2 0 0 0 
R126 0 0 0 0 1 1 2 

行列を得るためには、独自の「アイテム」の値は、行名になります。例えば、R124は、 'Route'カラムのA1、A2、A3にマッピングされた 'Order'カラムにそれぞれ1つのエントリを持ち、 'Route'カラムにはA4にマッピングする2つのエントリを持っています。マッピングされたエントリの数はそれに応じて記録されます。 R124にはA5、A6、A7の 'Route'列への 'Order'エントリマッピングがないため、出力行列に示すようにゼロが記録されます。

答えて

1

pivot_tableが必要です。

あなたのデータフレームがDFの場合:

df.pivot_table(index="Item",columns="Route",values="Order",aggfunc='count') 

ができます:

Route A1 A2 A3 A4 A5 A6 A7 
Item          
R124 1.0 1.0 1.0 2.0 NaN NaN NaN 
R126 NaN NaN NaN NaN 1.0 1.0 2.0 

と完全にご希望の答えを模倣するだけでfillnaastype追加:

df.pivot_table(index="Item",columns="Route",values="Order",aggfunc='count').fillna(0).astype(int) 

が与える

Route A1 A2 A3 A4 A5 A6 A7 
Item        
R124 1 1 1 2 0 0 0 
R126 0 0 0 0 1 1 2 
+0

優秀!まさに私が望んでいたもの。ありがとう@tvashtar – user27976

関連する問題