2016-08-02 49 views
2

Ich habe folgende csv: https://github.com/antonio1695/Python/blob/master/nearBPO/facturas.csvPivot mit Pandas Python zu bekommen booleans

aus dem ich einen Datenrahmen mit dem folgenden Code erstellt:

import pandas as pd 
df = pd.read_csv("C:/Users/Antonio/Desktop/nearBPO/facturas.csv", encoding = "ISO-8859-1") 
df_du = df.iloc[:,[0,5]] 
dfv = df_du.groupby('UUID')['Desc'].apply(list) 
df2 = dfv.reset_index() 

* Anmerkung: Ich bin die csv lokal nehmen.

, die nach dem Code wie folgt aussieht:

UUID          Desc 
0 0019A60D-78F8-E341-8D3E-9786201FE017 [TRANSPORTACION DE PASAJEROS] 
1 003B8B8F-7017-E441-8C84-8C0EA577E29D [SERVICIO POR HORA] 
2 00536BC1-1B10-4146-A59B-36613090EF10 [CONSUMO Y RENTA DE SALA DE JUNTAS] 
3 005BBAEE-ABEC-E341-8CED-15DA22D11F65 [VERIFICACION HOLOGRAMA DOBLE CERO] 
4 006C5F2E-CAE0-4498-9288-0241C1949D8A [C Meg XT Clas CH, Com Whop Q CH, C Meg XT Cla... 
5 0075D1FC-996D-4784-9755-2F4598D16163 [Consumo] 

Ich möchte einen Datenrahmen machen, die jedes Element des ‚Desc‘ Spalte als Spalte und jeder UUID als Folge hatte, wo ich eine hätte, 1 (oder True), wenn die UUID das entsprechende 'Desc' enthält.

Beispiel von dem, was ich will:

UUID          Transportacion de pasajeros Servicio por hora 
0019A60D-78F8-E341-8D3E-9786201FE017  1        0 
003B8B8F-7017-E441-8C84-8C0EA577E29D  0        1 

Was war zu machen war eine Matrix von 0 mit ein, wenn ich versuche, die 1en zu machen. Danach würde ich es zusammenführen und drehen. Da die 'Desc' jedoch identisch sind, wusste ich nicht, wie groß ich es machen sollte. Und es scheint mit vielen anderen Fehlern in der Zusammenführung Teil zu kommen.

+1

Können Sie diese 'df2 versuchen [ 'Desc'] str.join ('___') str.get_dummies ('___') ' – ayhan

+0

Ich bekomme die Spalten, aber ich habe nicht die UUID als Referenz. Ich habe auch keine gesehen 1. Es könnte nur sein, dass ich die ganze Basis nicht gesehen habe, ich werde sie exportieren, um nach Einsen zu suchen. @ayhan –

Antwort

3

können Sie verwenden

pd.concat([df2['UUID'], df2['Desc'].str.join('___').str.get_dummies('___')], axis=1) 

Es gibt so etwas wie folgt aus:..

Out: 
            UUID SERVICIO POR HORA \ 
0 0019A60D-78F8-E341-8D3E-9786201FE017     0 
1 003B8B8F-7017-E441-8C84-8C0EA577E29D     1 

    TRANSPORTACION DE PASAJEROS 
0       1 
1       0 
+0

Es hat funktioniert, danke! Es dauert eine Weile, um zu laufen. Es ist normal? Oder gibt es einen schnelleren Weg? Denn hinterher mache ich es mit etwas 1000 mal größerem lol. –

+1

@ AntonioLópezRuiz Beim groupby stage kannst du 'df_du.groupby (' UUID ') [' Desc ']. Apply (' ___ '. Join) 'benutzen und am Ende kannst du' pd.concat ([df2 [' UUID '], df2 [' Desc ']. Str.get_dummies (' ___ ')], axis = 1) '. Nicht sicher, ob es die Zeit drastisch reduzieren würde. – ayhan