2017-09-01 54 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