Распаковка объекта JSON из столбца панд в новые столбцы
У меня есть объект JSON, который содержит несколько других объектов JSON внутри. Общая структура (взята из документации Apple Search Ads API):
{
"id": number,
"orgId": number,
"name": string,
"budgetAmount": {Amount Object},
"dailyBudgetAmount": {Amount Object},
"adamId": number,
"negativeKeywords": [list of NegativeKeyword Objects], # notice list of objects
"paymentModel": enum,
"locInvoiceDetails": {LocInvoiceDetails Object},
"adGroups": [list of AdGroup Objects], # notice list of objects
"budgetOrders": [list of strings],
"startTime": UTC-timestamp,
"endTime": UTC-timestamp,
"deleted": bool,
"status": enum,
"servingStatus": enum,
"servingStateReasons": [list of strings],
"storefront": ISO-ALPHA2-country-code,
"modificationTime": UTC-timestamp
}
Объект Adgroup выглядит так:
{
"id": number,
"campaignId": number,
"name": string,
“defaultCPCBid”: {Amount Object},
"cpaGoal": {Amount Object},
"startTime": UTC-timestamp,
"endTime": UTC-timestamp,
"keywords": [list of TargetedKeyword Objects], # notice list of objects
"negativeKeywords": [list of NegativeKeyword Objects], # notice list of objects
"automatedKeywordsOptIn": boolean,
"targetingDimensions": [list of TargetingDimensions Objects], # notice list of objects
"deleted": boolean,
"status": enum,
"servingStatus": enum,
"servingStateReasons": [list of strings],
"modificationTime": UTC-timestamp
}
Объект adgroup также имеет список объектов ключевых слов, которые находятся по ссылке выше.
Используя это руководство, мне удалось создать 3 кадра данных: один для кампаний, один для групп объявлений и один для ключевых слов.
Например, код, который я использовал для групп объявлений, был
d = r.json()
# campaign object is the value to a key, 'data'
adgroups_df = json_normalize(data=d['data'], record_path=['adGroups'])
adgroups_df.head(10)
Тем не менее, принимая defaultCpcBid
Например, поле возвращает один столбец для него, где пример строки выглядит
{'amount': '0.2', 'currency': 'GBP'}
То, что я хочу, это иметь два новых цвета, один defaultCpcBid.amount
и другой defaultCpcBid.currency
вместо того, чтобы весь объект в одном ряду.
Странно, он делает это для объекта кампании (budgetAmount
поле распаковывается в два столбца budgetAmount.amount
и другой budgetAmount.currency
)
Я использую тот же код, чтобы получить данные кампании
d = r.json()
campaigns_df = json_normalize(d['data'])
campaigns_df.head(10)
Какой лучший способ сделать это?