【问题标题】:Pandas dataframe to json without index熊猫数据框到没有索引的json
【发布时间】:2015-04-19 20:53:09
【问题描述】:

我正在尝试获取一个数据框并将其转换为特定的 json 格式。

这是我的数据框示例:

DataFrame name: Stops
id    location
0     [50, 50]
1     [60, 60]
2     [70, 70]
3     [80, 80]

这是我想转换成的 json 格式:

"stops":
[
{
    "id": 1,
    "location": [50, 50]
},
{
    "id": 2,
    "location": [60, 60]
},
... (and so on)
]

请注意,这是一个字典列表。我用以下代码几乎就在那里:

df.reset_index().to_json(orient='index)

但是,该行还包括这样的索引:

"stops":
{
"0":
    {
        "id": 0,
        "location": [50, 50]
    },
"1":
    {
        "id": 1,
        "location": [60, 60]
    },
... (and so on)
}

请注意,这是一个字典的字典,还包含两次索引(在第一个字典和第二个字典中的“id”!任何帮助将不胜感激。

【问题讨论】:

  • 也许行为改变了?我得到ValueError: too many values to unpack (expected 2)

标签: python json pandas


【解决方案1】:

您可以使用orient='records'

print df.reset_index().to_json(orient='records')

[
     {"id":0,"location":"[50, 50]"},
     {"id":1,"location":"[60, 60]"},
     {"id":2,"location":"[70, 70]"},
     {"id":3,"location":"[80, 80]"}
]

【讨论】:

  • 就是这么简单。我爱熊猫……还有你!谢谢!
  • 如果您根本不需要索引,只需删除“reset_index()”部分即可。
  • 偶然发现的。
【解决方案2】:

自 2017 年以来,有一个 index=False 选项。与orient='split'orient='table' 一起使用。归功于这个类似问题的答案:https://stackoverflow.com/a/59438648/1056563

    dfj = json.loads(df.to_json(orient='table',index=False))

【讨论】:

    【解决方案3】:

    如果你想要一个 Python dict(python 中的 JSON 对象等价物)而不是 JSON 字符串:

    df.to_dict(orient='records')
    

    【讨论】:

      【解决方案4】:

      还有另一种方法。

      df_dict=df.reset_index().to_dict(orient='index')
      df_vals=list(df_dict.values())
      

      【讨论】:

        猜你喜欢
        • 2023-01-26
        • 2021-02-26
        • 2021-11-11
        • 2022-07-10
        • 2014-08-29
        • 1970-01-01
        • 2014-02-01
        相关资源
        最近更新 更多