Тема: Складний вибір в pandas
Ламаю голову. Є json:
{
"odata.metadata":"https://example1.com/odata/$metadata#Contacts","value":[
{
"Addresses":[
{
"ContactId":"35aa05d1-21c7-493d-96e3-00003c966732","AssociatedEntity":"ac7a9ec8-b71b-486b-8b3b-41b6bc11f936",...
}
],"ContactId":"35aa05d1-21c7-493d-96e3-00003c966732",...
},{
"Addresses":[
{
"ContactId":"ca717463-734d-4f2f-a01e-00006ff0c806","AssociatedEntity":"bda08493-7ae0-47cf-8d3a-f1a486498836",...
}
],"ContactId":"ca717463-734d-4f2f-a01e-00006ff0c806",...
},
Мені потрібно за допомогою pandas вибрати Addresses.ContactId і Addresses.AssociatedEntity, однак поки що вдається вибрати лише Addresses в цілому:
df1a = df[['Addresses']].copy()
print(df1a)
Addresses
0 [{'ContactId': '35aa05d1-21c7-493d-96e3-00003c...
1 [{'ContactId': 'ca717463-734d-4f2f-a01e-00006f...
2 [{'ContactId': '2cfb4580-2aa6-4e7a-9042-000075...
3 [{'ContactId': 'c6fc4e49-34a7-4eb0-8b5d-00008d...
4 [{'ContactId': 'cbfef02a-c1df-4753-aef7-0000a5...
.. ...
995 [{'ContactId': 'c1565f0c-e7ed-4e7a-b53d-018532...
996 [{'ContactId': '74b26660-0d19-465d-bfd4-01871e...
997 [{'ContactId': 'c5c2ff45-c36f-4316-9272-01878d...
998 [{'ContactId': 'aa32a531-daef-415d-a7c7-0187ac...
999 [{'ContactId': '9fbd7888-7dd8-4f0c-a851-01895b...[1000 rows x 1 columns]
Як тут добратися до Addresses.ContactId?
----
Upd: без pandas це доволі тривіально:
j = response_json['value']
i = 0
print('ContactId' + " " + 'AssociatedEntity')
for x in j:
i = i + 1
if i<4:
for y in x['Addresses']:
print(y['ContactId'] + " " + y['AssociatedEntity'])
ContactId AssociatedEntity
35aa05d1-21c7-493d-96e3-00003c966732 ac7a9ec8-b71b-486b-8b3b-41b6bc11f936
ca717463-734d-4f2f-a01e-00006ff0c806 bda08493-7ae0-47cf-8d3a-f1a486498836
2cfb4580-2aa6-4e7a-9042-000075733364 a1e7f700-cead-4be6-bc95-a49e7aca3638
Однак цимес pandas якраз в тому, що не потрібно ітерацій, тобто все відбувається швидко, незалежно скільки тисяч рядків буде в джейсоні... Тож сподіваюся знайти рішення для pandas.