【问题标题】:How do I convert Shopify API json into a readable dataframe?如何将 Shopify API json 转换为可读的数据框?
【发布时间】:2021-02-16 20:48:24
【问题描述】:

我有以下 Python 3.7 代码以从 Shopify Admin API 中提取 json 格式的订单数据并格式化为 pandas 数据框。

r = requests.get('https://%s:%s@%s.myshopify.com/admin/api/2021-01/orders.json?status=any' % (API_KEY, PASSWORD, SHOP_NAME))
d1 = r.json()

df = pd.json_normalize(d1)
print(df)

目前,我的输出如下所示:

但是,我想要的输出如下所示:

作为参考,d1 如下所示: {'orders': [{'id': 30001, 'email': 'test@gmail.com', 'closed_at': None,...

我应该使用json.normalize() 以外的函数来实现我想要的输出吗?我也尝试过使用json.dumps() 在字典和字符串之间进行格式化,但我没有成功。

【问题讨论】:

  • 你能发布d1 的样子吗?
  • @AlexF - 刚刚更新了我的帖子

标签: python json pandas shopify-api


【解决方案1】:

所以,其实很简单。你只需要访问order 键来获取你想要pd.DataFrame 的值字典。

这里是一些示例代码

import pandas as pd
import json

d = {
    'orders': [
        {'id': 3111498449045, 'email': 'test@gmail.com', 'closed_at': None},
        {'id': 3111498449046, 'email': 'test@gmail.com', 'closed_at': None},
        {'id': 3111498449047, 'email': 'test@gmail.com', 'closed_at': None}
    ]
}

pd.DataFrame.from_dict(d['orders'])

要修复您的代码,您应该这样做:

r = requests.get('https://%s:%s@%s.myshopify.com/admin/api/2021-01/orders.json?status=any' % (API_KEY, PASSWORD, SHOP_NAME))
d1 = r.json()

df = pd.DataFrame.from_dict(d['orders'])
print(df)

【讨论】:

  • 这在大多数情况下都有效。然而,后面一个名为 total_shipping_price_sent 的字段(在我的示例中未显示)返回如下:{'shop_money': {'amount': '10.00', 'currency_code': 'USD'}, 'presentment_money': {'amount': '10.00', 'currency_code': 'USD'}}。如何仅解析 shop_money 下的金额?
  • 您需要对 json 字典进行预处理,以便在转换为数据帧之前仅提取 shop_money['amount']。如果你想在描述中发布更长的json我可以看看。
  • @markellefultz20 你能接受我的回答吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-15
  • 2019-08-11
  • 1970-01-01
  • 2020-10-31
  • 2023-02-17
  • 1970-01-01
相关资源
最近更新 更多