2017-04-02 2 views
0

データフレーム列の行を列に変換する必要がありますが、GROUPBYの後に問題があります。 以下は、タイプ1からタイプ6の間でタイプを持つことができる3人のユーザーのセットです。Python - グループ化した後に行を列に変換し、一致しない行を0にします。

user_id1 type4 
user_id1 type6 
user_id1 type1 
user_id1 type2 
user_id1 type1 
user_id1 type6 
user_id2 type1 
user_id2 type2 
user_id2 type2 
user_id2 type1 
user_id2 type3 
user_id2 type4 
user_id2 type5 
user_id2 type6 
user_id2 type2 
user_id2 type6 
user_id3 type1 
user_id3 type2 
user_id3 type3 
user_id3 type2 

私は期待していた出力がある -

user_id type1 type2 type3 type4 type5 type6 
user_id1 2 1  0  1  0  2 
user_id2 2 3  1  1  1  2 
user_id3 1 2  1  0  0  0 

私はタイプにGROUPBYを実行しようとしましたとcount.But特に不足しているタイプの列に変換する方法がわからないが移入する必要がありました0

ありがとうございました。

+0

は、あなたが試したどのようなコードを表示しますか? –

+0

[pandasがデータフレームをピボット回転する、重複する行]の可能な複製(http://stackoverflow.com/questions/11400181/pandas-pivoting-a-dataframe-duplicate-rows) – philshem

答えて

0

あなたが使用する必要があるのは、pandasのpivot_tableです。必要な行と列を指定することができます。fill_valueは、空の値とaggfunclenのカウントで何をしたいのかを示します。

私はあなたのDataSeriesがどのように見えるかわからないんだけど、あなたはこのようSTH必要があります。

pd.pivot_table(data, index='user_id', columns='type', aggfunc=len, fill_value=0) 
関連する問題