2016-12-05 2 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 список словарей Я пытаюсь преобразовать в панд dataframe , «attributes» - это столбец с текстом в формате json. Я попытался получить некоторые знания из этого link, однако это не смогло решить мою проблему. Любое предложение/советы по преобразованию списка словарей в файловый фрейм panda будет полезно.

ответ

4

Чтобы преобразовать список dicts в панд dataframe использовать следующее:

stdf_noncookiejson = pd.DataFrame.from_records(data) 

pandas.DataFrame.from_records

DataFrame.from_records(данные, индекс = None, исключите = None, столбцы = Нет, coerce_float = False, nrows = None)

Вы можете установить индекс, имя колонки и т.д., как вы читаете это в

Если 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, exact_float = False, date_unit = нет, кодирование = None, линии = False)

0

Ссылочные это answer.

Предполагая d вашего списка словарей, просто используйте:

df = pd.DataFrame(d) 
0

Просто, вы можете использовать панд DataFrame конструктора.

import pandas as pd 

print (pd.DataFrame(data)) 
0

Наконец-то найден способ преобразования списка dict в panda dataframe. Ниже приведен код:

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

Метод А гораздо быстрее, чем метод B. Я создам еще один пост с просьбой о помощи на разнице между этими двумя методами. Кроме того, в некоторых наборах данных метод B не работает.

Смежные вопросы