2016-07-25 13 views
2

Ich habe df:Pandas: transponieren Datenrahmen

ID url visits count_sec buys 
0012ea90a6deb4eeb2924fb13e844136 aliexpress.com 3438 33067 25 
0012ea90a6deb4eeb2924fb13e844136 ebay.com 9 44 
001342afb153e2775649dc5ae0460605 ozon.ru 1 6 
0019b08bc9bb8da21f3b8ecc945a67d3 aliexpress.com 24 2196  
0019b08bc9bb8da21f3b8ecc945a67d3 bonprix.ru 42 1378  

Ich muss es transponse und

ID           url 
            visits count_sec buys 
            aliexpress.com   ebay.com   ozon.ru  aliexpress.com  bonprix.ru 
0012ea90a6deb4eeb2924fb13e844136 3438 33067 25  9 44 0  0 0 0  0 0 0   0 0 0 
001342afb153e2775649dc5ae0460605 0 0 0   0 0 0   1 6 0  0 0 0   0 0 0 
0019b08bc9bb8da21f3b8ecc945a67d3 0 0 0   0 0 0   0 0 0  24 2196 0   42 1378 0 

bekommen Wie kann ich das tun?

+0

Brauchen Sie Top 'URL' in Multiindex in Spalten? – jezrael

Antwort

3

Sie können pivot_table verwenden, aber es fehlt top url in MultiIndex in Spalten. Auch Werte sind nur zufällig, weil nicht klar ist, welche Spalte Werte enthält:

#new column with value `url` 
df['url1'] = 'url' 
df1 = df.pivot_table(index='ID', values=['visits','count_sec','buys'],columns=['url1','url']) 
#swap first and second level in MultiIndex in columns 
df1.columns = df1.columns.swaplevel(0,1) 
#remove columns names 
df1 = df1.rename_axis((None,None,None), axis=1) 
print (df1) 
              url        \ 
             visits        
           aliexpress.com bonprix.ru ebay.com ozon.ru 
ID                    
0012ea90a6deb4eeb2924fb13e844136   3438.0  NaN  NaN  NaN 
001342afb153e2775649dc5ae0460605   NaN  NaN  NaN  NaN 
0019b08bc9bb8da21f3b8ecc945a67d3   NaN  NaN  NaN  NaN 

                      \ 
             count_sec        
           aliexpress.com bonprix.ru ebay.com ozon.ru 
ID                    
0012ea90a6deb4eeb2924fb13e844136  33067.0  NaN  9.0  NaN 
001342afb153e2775649dc5ae0460605   NaN  NaN  NaN  1.0 
0019b08bc9bb8da21f3b8ecc945a67d3   24.0  42.0  NaN  NaN 


              buys        
           aliexpress.com bonprix.ru ebay.com ozon.ru 
ID                   
0012ea90a6deb4eeb2924fb13e844136   25.0  NaN  44.0  NaN 
001342afb153e2775649dc5ae0460605   NaN  NaN  NaN  6.0 
0019b08bc9bb8da21f3b8ecc945a67d3   2196.0  1378.0  NaN  NaN 
+0

Ist es echt, 'url' an der Spitze zu machen und' Besuche, count_sec, kauft' darunter? – ldevyataykina

+0

Und ich fragte nach 'merge' df. Sie haben mich gefragt 'result = pd.merge (kurz, short1, on = 'ID', wie = 'outer') '. aber wie kann ich 'pivot table' zusammenführen? – ldevyataykina

+0

Bitte siehe bearbeiten, ich füge Top Level 'URL' hinzu. – jezrael