2017-06-21 24 views
1

私は、異なるカテゴリ(A〜F)の顧客の注文を含むデータフレームを持っています。 1つはこのカテゴリからの購入を示し、0は無しを示します。今では、それぞれのカテゴリの購入が1日あたりおよび顧客ごとに行われたかどうかを1と0の符号化で示したいと思います。ワンホットエンコーディングの結果で日付、カテゴリ、顧客別に顧客注文をグループ化する

YEAR MONTH DAY A B C D E F Customer 
2007 1 1 1 0 0 0 0 0 5000  
2007 1 1 1 0 0 0 0 0 5000  
2007 1 1 0 1 0 0 0 0 5000  
2007 1 2 0 1 0 0 0 0 5000  
2007 1 2 0 0 1 0 0 0 5000 

出力は次のようになります。私は、しかし、私は正しい結果を得るカントパンダは「GROUPBY」で構築使用して、これをうまくしようとしてきた

YEAR MONTH DAY A  B C D E F Customer 
2007 1  1 1  1 0 0 0 0 5000  

。誰でもこれを解決する方法を知っていますか?

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

答えて

1

私はあなたがgroupbyと集計maxが必要だと思う:

cols = ['YEAR','MONTH','DAY','Customer'] 
df = df.groupby(cols, as_index=False).max() 
print (df) 
    YEAR MONTH DAY Customer A B C D E F 
0 2007  1 1  5000 1 1 0 0 0 0 
1 2007  1 2  5000 0 1 1 0 0 0 

ANF列の必要があるのと同じ順序場合DataFrame.reindex_axisを追加します。魔法のように

cols = ['YEAR','MONTH','DAY','Customer'] 
df = df.groupby(cols, as_index=False).max().reindex_axis(df.columns, axis=1) 
print (df) 
    YEAR MONTH DAY A B C D E F Customer 
0 2007  1 1 1 1 0 0 0 0  5000 
1 2007  1 2 0 1 1 0 0 0  5000 
+0

作品!どうもありがとうございます!私はそのような良いアプローチを知らなかった! – AaronDT

+0

うれしいことに、うれしい1日! – jezrael

関連する問題