У меня есть следующий код для получения данных из Shopify orders.json в DataFrame pandas. Код следующий и работает хорошо:
shopify_orders = pd.DataFrame()
page=1
while True:
orders_url = (shopify_url+'orders.json?fields=order_number,user_id,created_at,id,name,financial_status,'+
'source_name,referring_site,line_items,total-price,'+
'shipping_address&page='+str(page)
)
s = requests.get(orders_url)
if len(s.text)>13:
print('Getting Page Number: {} '.format(page))
data = json.loads(s.text)
orders = json_normalize(data, 'orders')
shopify_orders = shopify_orders.append(orders)
page += 1
else:
print('Finished at Page: {} '.format(page))
break
Результатом является фрейм данных с 11 столбцами. Два из этих столбцов: shipping_address и line_items - это вложенные файлы jsons.
Вы можете увидеть, как они вложены здесь: https://help.shopify.com/en/api/reference/orders/order
Мне нужно развернуть jsons в этих двух столбцах. Я пробовал разные подходы. Но я получаю ту же ошибку:
TypeError: ('Expected String or Unicode', 'occurred at index 0')
Что именно я делаю не так?
Так что, возможно, создайте пустой список вроде dfs = [] перед циклом while. Затем внутри цикла, когда ваш оператор if верен, вы можете попробовать dfs.append(pd.DataFrame(pd.io.json.json_normalize(s.json()))) (или, возможно, pd.DataFrame.from_dict()). Очевидно, вы можете назначить промежуточные переменные, если хотите. После цикла вы должны вызвать df = pd.concat(dfs, sort=False). Может быть, что-то в этом роде.






Вместо создания списка словарей попробуйте создать список DataFrames, который затем можно добавить с помощью
pd.concat(). Также проверьте, позволяет ли ваша версияrequestsполучить доступ кs.json().