Python: словоподобный объект в датафрейме для нового фрейма данных - PullRequest
0 голосов
/ 03 ноября 2018

Здравствуйте, я сделал несколько операций по созданию веб-страниц, и у меня есть похожий на словарь объект, который находится в одном из столбцов моего фрейма данных.

data.offerAggregate.property_aggregate.property.floors - имя столбца, а остальное - значение внутри столбца.

data.offerAggregate.property_aggregate.property.floors
0  [{'units': [{'features': [{'Code': 'chairs', 'Exists': True}, {'Code': 'window', 'Exists': True}, {'Code': 'balcony', 'Exists': True}, {'Code': 'fridge', 'Exists': True}, {'Code': 'stove', 'Exists': True}, {'Code': 'oven', 'Exists': True}, {'Code': 'microwave', 'Exists': True}, {'Code': 'washing-machine', 'Exists': True}, {'Code': 'dryer', 'Exists': False}, {'Code': 'dishwasher', 'Exists': False}, {'Code': 'table', 'Exists': True}]}, {'features': [{'Code': 'toilet', 'Exists': True}, {'Code': 'sink', 'Exists': True}, {'Code': 'bathtub', 'Exists': False}, {'Code': 'shower', 'Exists': True}]}, {'features': [{'Code': 'wardrobe', 'Exists': True}, {'Code': 'chest-of-drawers', 'Exists': True}, {'Code': 'desk', 'Exists': True}, {'Code': 'chairs', 'Exists': True}, {'Code': 'sofa', 'Exists': False}, {'Code': 'sofa-bed', 'Exists': False}, {'Code': 'window', 'Exists': True}, {'Code': 'balcony', 'Exists': False}, {'Code': 'tv', 'Exists': False}]}, {'features': [{'Code': 'desk', 'Exists': False}, {'Code': 'chairs', 'Exists': True}, {'Code': 'sofa', 'Exists': True}, {'Code': 'sofa-bed', 'Exists': False}, {'Code': 'coffee-table', 'Exists': False}, {'Code': 'table', 'Exists': True}, {'Code': 'tv', 'Exists': False}]}, {'features': [{'Code': 'chest-of-drawers', 'Exists': True}, {'Code': 'desk', 'Exists': True}, {'Code': 'chairs', 'Exists': True}, {'Code': 'sofa', 'Exists': False}, {'Code': 'sofa-bed', 'Exists': False}, {'Code': 'window', 'Exists': True}, {'Code': 'balcony', 'Exists': False}]}]}]

То, что я хотел бы закончить, - это новый фрейм данных, в котором значения Code указаны как имена столбцов, а значения Exists - как значения столбцов. Поэтому вместо {'Code': 'chairs', 'Exists': True} я бы получил chairs True

Я попытался превратить его в объект json, чтобы получить доступ к ключам и сохранить их в новом фрейме данных, но я получаю ошибки.

df_floors = pd.DataFrame(df['data.offerAggregate.property_aggregate.property.floors'])

jsonObj = df_floors.to_json(orient='records')

print(jsonObj['Code'])
TypeError: string indices must be integers

Я не уверен, что это правильный подход, но любые идеи или помощь очень ценятся!

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018
pd.DataFrame(row[0]['units'][0]['features'])

производит:

               Code  Exists
0            chairs    True
1            window    True
2           balcony    True
3            fridge    True
4             stove    True
5              oven    True
6         microwave    True
7   washing-machine    True
8             dryer   False
9        dishwasher   False
10            table    True

или


print(pd.DataFrame([{x['Code']: x['Exists'] for x in row[0]['units'][0]['features']}]))

производит:

   balcony  chairs  dishwasher  dryer  fridge  microwave  oven  stove  table  
0     True    True       False  False    True       True  True   True   True   
0 голосов
/ 03 ноября 2018

Проверьте формат jsonObj, чтобы увидеть, соответствует ли он вашим ожиданиям.

print(jsonObj) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...