2016-12-05 178 views
1

我正在面臨一個基本問題,即轉換以json格式文本解析列的字典列表。下面是數據的簡要快照:將字典列表轉換爲Pandas Dataframe

[{u'PAGE TYPE': u'used-serp.model.brand.city'}, 
{u'BODY TYPE': u'MPV Cars', 
    u'ENGINE CAPACITY': u'1461', 
    u'FUEL TYPE': u' Diesel', 
    u'MODEL NAME': u'Renault Lodgy', 
    u'OEM NAME': u'Renault', 
    u'PAGE TYPE': u'New-ModelPage.OverviewTab'}, 
{u'PAGE TYPE': u'used-serp.brand.city'}, 
{u'BODY TYPE': u'SUV Cars', 
    u'ENGINE CAPACITY': u'2477', 
    u'FUEL TYPE': u' Diesel', 
    u'MODEL NAME': u'Mitsubishi Pajero', 
    u'OEM NAME': u'Mitsubishi', 
    u'PAGE TYPE': u'New-ModelPage.OverviewTab'}, 
{u'BODY TYPE': u'Hatchback Cars', 
    u'ENGINE CAPACITY': u'1198', 
    u'FUEL TYPE': u' Petrol , Diesel', 
    u'MODEL NAME': u'Volkswagen Polo', 
    u'OEM NAME': u'Volkswagen', 
    u'PAGE TYPE': u'New-ModelPage.GalleryTab'}, 

此外,我使用的分析代碼,詳述如下:

stdf_noncookie = [] 
stdf_noncookiejson = [] 

for index, row in df_noncookie.iterrows(): 
    try: 
     loop_data = json.loads(row['attributes']) 
     stdf_noncookie.append(loop_data) 
    except ValueError: 
     loop_nondata = row['attributes'] 
     stdf_noncookiejson.append(loop_nondata) 

stdf_noncookie是字典我試圖轉換成大熊貓數據框列表。 'attributes'是具有json格式文本的列。我試圖從這個link得到一些學習,但是這不能解決我的問題。任何有關將字典列表轉換爲熊貓數據框的建議/提示都將有所幫助。

回答

4

要將類型的字典列表轉換爲大熊貓數據框使用以下命令:

stdf_noncookiejson = pd.DataFrame.from_records(data) 

pandas.DataFrame.from_records

DataFrame.from_records(數據,索引=無,排除=無,列=無,coerce_float = False,nrows =無)

您可以設置索引,命名列等,你在

讀它如果youre使用JSON工作,你也可以使用read_json方法

stdf_noncookiejson = pd.read_json(data) 

pandas.read_json

pandas.read_json(path_or_buf = None,orient = None,typ ='frame',dtype = True,convert_axes = True,convert_dates = True, keep_default_dates = True,numpy = False,precise_float =假, date_unit相同=無,編碼=無,線條=假)

0

參考此answer

假設d是字典的列表,只需使用:

df = pd.DataFrame(d) 
0

簡單地說,你可以使用熊貓DataFrame構造。

import pandas as pd 

print (pd.DataFrame(data)) 
0

終於找到了將dict列表轉換爲熊貓數據幀的方法。以下是代碼:

Method A 
stdf_noncookie = df_noncookie['attributes'].apply(json.loads) 
stdf_noncookie = stdf_noncookie.apply(pd.Series) 

Method B 
stdf_noncookie = df_noncookie['attributes'].apply(json.loads) 
stdf_noncookie = pd.DataFrame(stdf_noncookie.tolist()) 

方法A比方法B快得多。我將創建另一個帖子,詢問兩種方法之間的區別。另外,在某些數據集中,方法B不起作用。