Извлечение ключа, значения из словаря в качестве фрейма данных

У меня есть словарь, который я извлечил из json-url, который имеет 6 ключей. Мой интерес заключается только в значениях для ключевого 'value' . Данные структурированы следующим образом:

  [in] print(data) [out] ...'values': [{'x': 1230940800, 'y': 0}, {'x': 1231113600, 'y': 0}, {'x': 1231286400, 'y': 0}, {'x': 1231459200, 'y': 0}, {'x': 1231632000, 'y': 0}, {'x': 1231804800, 'y': 0}, {'x': 1231977600, 'y': 0}, {'x': 1232150400, 'y': 0}, {'x': 1232323200, 'y': 0}, {'x': 1232496000, 'y': 0}, {'x': 1232668800, 'y': 0}, {'x': 1232841600, 'y': 0}, {'x': 1233014400, 'y': 0}, {'x': 1233187200, 'y': 0}, {'x': 1233360000, 'y': 0}] 

Где 'x' – временная метка unix, а 'y' – значение для этого времени. Как я могу извлечь значения из словаря 'value' и перестроить их так, чтобы 'x' помечен как 'date' и структурирован в таком формате: 2011-09-13 ?

Предполагая, что вы присваиваете то, что хранится в 'values' переменной lst (например, lst = data['value'] ), вы можете использовать это:

 import pandas as pd import numpy as np df = pd.DataFrame({'Date': np.array([subdct['x'] for subdct in lst], dtype='datetime64[s]'), 'y': [subdct['y'] for subdct in lst]}) 

С:

 lst = [{'x': 1230940800, 'y': 0}, {'x': 1231113600, 'y': 0}, {'x': 1231286400, 'y': 0}, {'x': 1231459200, 'y': 0}, {'x': 1231632000, 'y': 0}, {'x': 1231804800, 'y': 0}, {'x': 1231977600, 'y': 0}, {'x': 1232150400, 'y': 0}, {'x': 1232323200, 'y': 0}, {'x': 1232496000, 'y': 0}, {'x': 1232668800, 'y': 0}, {'x': 1232841600, 'y': 0}, {'x': 1233014400, 'y': 0}, {'x': 1233187200, 'y': 0}, {'x': 1233360000, 'y': 0}] 

Это дает мне этот df :

  Date y 0 2009-01-03 0 1 2009-01-05 0 2 2009-01-07 0 3 2009-01-09 0 4 2009-01-11 0 5 2009-01-13 0 6 2009-01-15 0 7 2009-01-17 0 8 2009-01-19 0 9 2009-01-21 0 10 2009-01-23 0 11 2009-01-25 0 12 2009-01-27 0 13 2009-01-29 0 14 2009-01-31 0 

если я правильно понял вас, панды должны иметь возможность преобразовать его в кадр данных:

 df = pd.DataFrame(values_dictionary).rename(columns={'x':'Date'}) 

то вы можете использовать to_datetime для преобразования его в формат yyyy / mm / dd:

 df['Date'] = pd.to_datetime(df['Date'].astype(str), unit='s') 

вывод:

  Date y 0 2009-01-03 0 1 2009-01-05 0 2 2009-01-07 0 3 2009-01-09 0 4 2009-01-11 0 5 2009-01-13 0 6 2009-01-15 0 7 2009-01-17 0 8 2009-01-19 0 9 2009-01-21 0 10 2009-01-23 0 11 2009-01-25 0 12 2009-01-27 0 13 2009-01-29 0 14 2009-01-31 0 

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

 import datetime dates = [datetime.datetime.fromtimestamp(xydict['x']).strftime("%Y-%m-%d") for xydict in values] 

EDIT: если вы хотите, чтобы это было в таком же словаре формате:

 import datetime dates = [{'date' : datetime.datetime.fromtimestamp(xydict['x']).strftime("%Y-%m-%d")} for xydict in values]