2017-06-21 36 views
1

我有一個數據框,其中包含來自不同類別(A-F)的客戶訂單。一個表示從這個類別購買,零表示沒有。現在我想用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 

輸出應該是這個樣子:

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

我一直在努力工作,這一點用大熊貓建立「GROUPBY」但我不能得到正確的結果。任何人都知道如何解決此問題?

非常感謝!

回答

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

很高興可以幫助,美好的一天! – jezrael