【问题标题】:Dataframe to JSON of a particular format - Python数据框到特定格式的 JSON - Python
【发布时间】:2021-04-10 16:48:41
【问题描述】:

我有以下数据框

         lat        long                                         batchItems
0  64.427482 -161.457786  {"query": "?query=64.42748213233087,-161.45778...
1  31.271877  130.331371           {"query": "?query=31.271877,130.331371"}

我需要的格式如下

{
    "batchItems": [
        {"query": "?query=64.42748213233087,-161.45778592219781"},
        {"query": "?query=31.271877,130.331371"}
    ]
}

在 pandas 中使用内置的 to_json 方法会给我带来不需要的反斜杠(“{”),这些反斜杠会被我试图发布到的 API 拒绝。我不需要 lat 和 long 字段。

【问题讨论】:

  • 所以batchItemsdictstr(似乎是str 关于双引号)?
  • {"batchItems": df.batchItems.apply(ast.literal_eval).to_list()}?如果它们已经是字典,请跳过 apply

标签: python json pandas


【解决方案1】:

您的batchItemsstr 类型,因此如果您使用JSON,引号被转义是正常的,因为它们没有分隔某些字符串,它们在内容本身内。

您可以使用json.loads 将类型更改为dict,然后将列作为list

import json
result = {"batchItems": df['batchItems'].apply(json.loads).tolist()}
print(result)  # {'batchItems': [{'query': '?query=64,-161'}, {'query': '?query=31,130'}]}

【讨论】:

  • 谢谢,就像你推断的那样。这个答案完美:)
【解决方案2】:

df[['batchItems']].to_dict(orient='list') 将返回所需格式的字典

{
    "batchItems": [
        {"query": "?query=64.42748213233087,-161.45778592219781"},
        {"query": "?query=31.271877,130.331371"}
    ]
}

您必须将此字典发送到将数据发送到外部 API 的函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 2023-03-30
    • 2017-12-18
    相关资源
    最近更新 更多