#python #python-2.7
#python #python-2.7
Вопрос:
Я пытаюсь преобразовать несколько словарей, содержащихся в массиве, в фрейм данных pandas. Дикты сохраняются как таковые:
[[{u'category': u'anti-social-behaviour',u'location': {u'latitude': u'52.309886',
u'longitude': u'0.496902'},u'month': u'2015-01'},{u'category': u'anti-social-behaviour',u'location': {u'latitude': u'52.306209',
u'longitude': u'0.490475'},u'month': u'2015-02'}]]
Я пытаюсь отформатировать свои данные в формат, приведенный ниже:
Category Latitude Longitude
0 anti-social 524498.597 175181.644
1 anti-social 524498.597 175181.644
2 anti-social 524498.597 175181.644
. ... ...
. ... ...
. ... ...
Я попытался принудительно поместить данные в фрейм данных с помощью приведенного ниже кода, но это не дает желаемого результата.
for i in crimes:
for x in i:
print pd.DataFrame([x['category'], x['location']['latitude'], x['location']['longitude']])
Я очень новичок в Python, поэтому любые ссылки / советы, которые помогут мне создать этот фрейм данных, будут высоко оценены!
Ответ №1:
Вы на правильном пути, но вы создаете новый фрейм данных для каждой строки и не указываете правильный columns
. Следующий фрагмент должен работать:
import pandas as pd
import numpy as np
crimes = [[{u'category': u'anti-social-behaviour',u'location': {u'latitude': u'52.309886',
u'longitude': u'0.496902'},u'month': u'2015-01'},{u'category': u'anti-social-behaviour',u'location': {u'latitude': u'52.306209',
u'longitude': u'0.490475'},u'month': u'2015-02'}]]
# format into a flat list
formatted_crimes = [[x['category'], x['location']['latitude'], x['location']['longitude']] for i in crimes for x in i]
# now pass the formatted list to DataFrame and label the columns
df = pd.DataFrame(formatted_crimes, columns=['Category', 'Latitude', 'Longitude'])
Результатом является:
Category Latitude Longitude
0 anti-social-behaviour 52.309886 0.496902
1 anti-social-behaviour 52.306209 0.490475