2017-09-01 53 views
2

不同列我有以下列表:熊貓:分離列表分爲基於內容

brand_size = ['Brand:Ashfield Farm; Size/Weight:375g', 
       'Size/Weight:170g', 
       '', 
       'Brand:Lacura; Size/Weight:750 ml', 
       '', 
       '', 
       "Brand:Nature's Glen", 
       '', 
       '', 
       '', 
       'Brand:Ashfield Farm; Size/Weight:450g', 
       'Brand:Specially Selected', 
       'Brand:Specially Selected', 
       '', 
       '', 
       '', 
       '', 
       ''] 

我想要什麼:一個數據框,其中列出了「品牌」和「尺寸/重量」,如果有他們,如果沒有則保留空白。例如。

pd.DataFrame({'Brand':['Ashfield Farm', '', '', 'Lacura', '', '', "Nature's 
         Glen", '', '', '', 'Ashfield Farm', 'Specially 
         Selected', 'Specially Selected', '', '', '', '', ''], 
       'Size/Weight':['375g', '170g', '', '750ml', '', '', '', 
           '','', '', '450g', '', '', '', '', '', '', '']}) 

       Brand Size/Weight 
0  Ashfield Farm   375g 
1        170g 
2         
3    Lacura   750ml 
4         
5         
6  Nature's Glen    
7         
8         
9         
10  Ashfield Farm   450g 
11 Specially Selected    
12 Specially Selected    
13         
14         
15         
16         
17 

我在這一個入門很難,任何幫助嗎?

+0

哪裏是這個名單是從哪裏來的? –

+0

你可以改變生成列表的代碼嗎? – Kyle

回答

3

將brand_size轉換爲記錄字典並將其加載到數據框中。檢查下面的代碼。並對其進行更改,您認爲適合

dfdict = [dict(kv.split(':') for kv in e.split('; ') if kv) for e in brand_size] 
    df = pd.DataFrame.from_records(dfdict) 
    df = df.fillna('') 
+0

'[dict(kv.split(':')for e.split(';')if kv)for e in brand_size]' – piRSquared