2016-08-02 74 views
2

我有以下CSV:https://github.com/antonio1695/Python/blob/master/nearBPO/facturas.csv樞軸與熊貓Python來獲得布爾

從中我創建了下面的代碼數據框:

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() 

*注:我正在本地CSV。

的代碼看起來是這樣的,其後:

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] 

我想提出一個數據幀其中有在那裏我將有一個作爲列的「說明」列和每UUID爲行中的每個元素1(或True),如果UUID在其中具有相應的'描述'。我想要什麼

例子:

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

我試圖爲使是0矩陣如果使1的。之後我會合並它並轉動它。然而,由於某些'描述'是相同的,我不知道我應該做多大。這似乎與合併部分的許多其他缺陷一起出現。

+1

你可以試試這個'DF2 [ '說明'] str.join( '_____')str.get_dummies ('___')' – ayhan

+0

我得到的列,但我沒有UUID作爲參考。此外,我沒有看到任何1.這可能是因爲我沒有看到整個基地,我會出口它來搜索1的。 @ayhan –

回答

3

您可以使用

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

它返回是這樣的:。

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

它的工作,謝謝!它需要一段時間才能運行。這是正常的嗎?或者有更快的方法?因爲事後我做了1000倍大的哈哈。 –

+1

@AntonioLópezRuiz在groupby階段,您可以使用'df_du.groupby('UUID')['Desc']。apply('___'。join)',最後您可以使用'pd.concat([df2 [' UUID'],df2 ['Desc']。str.get_dummies('___')],axis = 1)'。不知道它是否會顯着縮短時間。 – ayhan