gpt4 book ai didi

python - 无需更改数据结构的 Pandas DataFrame 到嵌套 JSON

转载 作者:太空宇宙 更新时间:2023-11-04 00:18:05 24 4
gpt4 key购买 nike

我有pandas.DataFrame:

import pandas as pd
import json
df = pd.DataFrame([['2016-04-30T20:02:25.693Z', 'vmPowerOn', 'vmName'],['2016-04-07T22:35:41.145Z','vmPowerOff','hostName']],
columns=['date', 'event', 'object'])

date event object
0 2016-04-30T20:02:25.693Z vmPowerOn vmName
1 2016-04-07T22:35:41.145Z vmPowerOff hostName

我想将该数据框转换为以下格式:

  {
"name":"Alarm/Error",
"data":[
{"date": "2016-04-30T20:02:25.693Z", "details": {"event": "vmPowerOn", "object": "vmName"}},
{"date": "2016-04-07T22:35:41.145Z", "details": {"event": "vmPowerOff", "object": "hostName"}}
]
}

到目前为止,我已经试过了:

df = df.to_dict(orient='records')
j = {"name":"Alarm/Error", "data":df}
json.dumps(j)

'{"name": "Alarm/Error",
"data": [{"date": "2016-04-30T20:02:25.693Z", "event": "vmPowerOn", "object": "vmName"},
{"date": "2016-04-07T22:35:41.145Z", "event": "vmPowerOff", "object": "hostName"}
]
}'

但是,这显然没有将详细信息列放入自己的字典中。

我如何有效地将 df 日期列和所有其他列拆分为 JSON 的单独部分?

最佳答案

list and dict comprehension ,你可以这样做:

代码:

[{'date': x['date'], 'details': {k: v for k, v in x.items() if k != 'date'}}
for x in df.to_dict('records')]

测试代码:

df = pd.DataFrame([['2016-04-30T20:02:25.693Z', 'vmPowerOn', 'vmName'],
['2016-04-07T22:35:41.145Z', 'vmPowerOff', 'hostName']],
columns=['date', 'event', 'object'])

print([{'date': x['date'],
'details': {k: v for k, v in x.items() if k != 'date'}}
for x in df.to_dict('records')])

结果:

[{'date': '2016-04-30T20:02:25.693Z', 'details': {'event': 'vmPowerOn', 'object': 'vmName'}}, 
{'date': '2016-04-07T22:35:41.145Z', 'details': {'event': 'vmPowerOff', 'object': 'hostName'}}
]

关于python - 无需更改数据结构的 Pandas DataFrame 到嵌套 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50183789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com