2014-09-08 3 views
2

Я получаю данные JSON из службы API, и я хотел бы использовать DataFrame для вывода данных в CSV.JSON словари для Pandas DataFrame в Python

Итак, я пытаюсь преобразовать список словарей, содержащий около 100 000 словарей с примерно 100 ключевыми парами значений, вложенными до 4 уровней глубиной, в Pandas DataFrame.

Я использую следующий код, но это мучительно медленно:

try: 
    # Convert each JSON data event to a Pandas DataFrame 
    df_i = [] 
    for d in data: 
     df_i.append(json_normalize(d)) 

    # Concatenate all DataFrames into a single one 
    df = concat(df_i, axis=0) 

except AttributeError: 
    print "Error: Expected a list of dictionaries to parse JSON data" 

Кто-нибудь знает лучше и более быстрый способ сделать это?

+1

pandas может непосредственно прочитать json: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.json.read_json.html –

ответ

1

Существует whole section in the io docs при чтении json (как строки или файлы), непосредственно используя pd.read_json.

Вы должны быть в состоянии сделать что-то вроде:

pd.concat((pd.read_json(d) for d in data), axis=0) 

Это часто будет намного быстрее, чем создание временного Dict.

+0

Спасибо. Учитывая, что json-формат, который у меня есть, вложен, он не был правильно проанализирован read_json(), давая мне TypeError. Однако я использовал вашу форму с помощью json_normalize(): 'df = concat ((json_normalize (d) для d в данных), axis = 0)' – MauricioRoman

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