简体   繁体   中英

Pandas dataframe to json without index

I'm trying to take a dataframe and transform it into a partcular json format.

Here's my dataframe example:

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

Here's the json format I'd like to transform into:

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

Notice it's a list of dicts. I have it nearly there with the following code:

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

However, that line also includes the index like this:

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

Notice this is a dict of dicts and also includes the index twice (in the first dict and as the "id" in the second dict! Any help would be appreciated.

You can use 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]"}
]

Since 2017 there is an index=False option. Use it with orient='split' or orient='table' . Credit to this answer on a similar question: https://stackoverflow.com/a/59438648/1056563

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

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

df.to_dict(orient='records')

There is another way as well.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM