【问题标题】:Convert JSON data from pandas to a specific JSON schema/format in python在 python 中将 JSON 数据从 pandas 转换为特定的 JSON 模式/格式
【发布时间】:2017-12-18 17:14:02
【问题描述】:

我在 python 中有一些 JSON 数据,如下所示:

>>> print name_frame
... 
               name    name1    name2    name3     name4
Micro inc.      NaN    Jim D  Susan A      NaN       NaN
Vitacore    Billy B      NaN  Sally Q   Mark G       NaN
>>> payload = name_frame.apply(lambda x: [x.dropna()], axis=1).to_json(force_ascii=False)
... 
>>> print payload
... 




   {
"Micro inc.":[{"name1":"Jim D","name2":"Susan A"}],
    "Vitacore":[{"name":"Billy B","name2":"Sally Q","name3":"Mark G"}],

}

我需要它看起来像这样:

finalJSON = { 
    "company":{
        "name": "Micro inc.",
        "founders": {
            "name": "Jim D",
            "name": "Susan A",
            }
    }
    "company":{
        "name": "Vitacore",
        "founders": {
            "name": "Billy B",
            "name": "Sall Q", 
            "name":"Mark G",
        }

有没有人知道任何工具、库或关于如何完成这项工作的一般建议?我需要将每个公司对象作为 POST 请求发送到 API,并且它需要这种格式。从那里我需要将结果附加到 pandas DataFrame。 我认为这应该涉及遍历 JSON 数据、向每个公司提交 API、获取结果并将其添加到 dict 或如果可能的话直接添加到 Pandas DataFrame

payload= '''a single company from finalJSON'''

#p is a POST Request
p = requests.post((url + '/r'), json=payload, headers=headers)
p.text #<---- gotta go to a Pandas DataFrame 

提前感谢您的任何帮助或建议

【问题讨论】:

标签: python json pandas


【解决方案1】:
finalJSON = []
for company, names in df.iterrows():
    names = ['"{0}"'.format(name) for name in names.dropna().tolist()]
    names_json_str = ('"name": ' if names else '') + ', "name": '.join(names)
    finalJSON.append('"company": {"name": "' + company + '", "founders": {' + names_json_str + '}')
finalJSON = ', '.join(finalJSON)

>>> finalJSON
'"company": {"name": "Micro inc.", "founders": {"name": "Jim D", "name": "Susan A"}, 
 "company": {"name": "Vitacore", "founders": {"name": "Billy B", "name": "Sally Q", "name": "Mark G"}'

【讨论】:

  • 如何将输出存储为 POST 请求或单个对象?
  • 没关系,我发现我应该只在同一个循环中发出 POST 请求
猜你喜欢
  • 1970-01-01
  • 2020-12-09
  • 1970-01-01
  • 2022-08-16
  • 1970-01-01
  • 2020-06-20
  • 2020-08-05
  • 2017-01-08
  • 2023-03-04
相关资源
最近更新 更多