2017-11-03 13 views
-2

私はX1が行われ、テストの日付で、以下のデータセットを持って、X2は45のレベルとX3を持つテストの結果であるテスト名dummifiedするカテゴリーデータおよび集約

X1   X2 X3 
20.04.2017 AA 1256(NB) 
20.04.2017 AA 1257(NB) 
20.04.2017 AA 1258(LM) 
20.04.2017 LL 1257(NB) 
23.07.2017 LL 1256(NB) 
23.07.2017 LL 1258(LM) 

である私がしようとしています

Date   X3  AA LL 
20.04.2017 1256(NB) 1 1 
20.04.2017 1257(NB) 1 1 
20.04.2017 1258(LM) 1 0 
23.07.2017 1258(LM) 0 1 

に上記のデータを変換するI「をpd.get_dummies」を使用してAA & LLのためのダミー列を作成することができましたが、X3列に基づいて集約が起きていません。これを行うには

答えて

1

一つの方法は、get_dummies + sumを使用することになります。

df.set_index(['X1', 'X3']).X2\ 
     .str.get_dummies().sum(level=[0, 1]).reset_index() 

      X1  X3 AA LL 
0 20.04.2017 1256(NB) 1 0 
1 20.04.2017 1257(NB) 1 1 
2 20.04.2017 1258(LM) 1 0 
3 23.07.2017 1256(NB) 0 1 
4 23.07.2017 1258(LM) 0 1 
+0

ありがとう!! @COLDSPEED、しかしレベルが45レベルを好むように増加したら、レベル([0,1 .......、44])を書く必要がありますか? – Devesh

+0

@Devesh範囲を渡すことができます: 'level = np.arange(45)' –

+0

@COLDSPEED明確化のためにありがとう...そしてレベル数が不明な場合はどうなりますか? – Devesh

関連する問題