gpt4 book ai didi

python - 如何在 Python 中从 pandas 数据框创建嵌套的 JSON

转载 作者:太空宇宙 更新时间:2023-11-04 11:15:43 26 4
gpt4 key购买 nike

我有一个包含 Windows 10 日志的 Pandas 数据框。我希望这个 pandas df 转换为 JSON。执行此操作的有效方法是什么?

我已经让它生成了一个默认的 pandas df,但是这不是嵌套的。我多么想要它

{
"0": {
"ProcessName": "Firefox",
"time": "2019-07-12T00:00:00",
"timeFloat": 1562882400.0,
"internal_time": 0.0,
"counter": 0
},
"1": {
"ProcessName": "Excel",
"time": "2019-07-12T00:00:00",
"timeFloat": 1562882400.0,
"internal_time": 0.0,
"counter": 0
},
"2": {
"ProcessName": "Word",
"time": "2019-07-12T01:30:00",
"timeFloat": 1562888000.0,
"internal_time": 1.5533333333,
"counter": 0
}

我希望它看起来像这样

{
"0": {
"time": "2019-07-12T00:00:00",
"timeFloat": 1562882400.0,
"internal_time": 0.0,
"Processes" : {
"Firefox" : 0 # ("counter" value),
"Excel" : 0
},
"1": ...
}

最佳答案

在我看来,您想从基于 ['time', 'timeFloat', 'internal_time'] 的聚合数据创建 JSON,您可以这样做:

pd.groupby(['time', 'timeFloat', 'internal_time'])

但是,您的示例表明您想要维护索引键(“0”、“1” 等),这与之前陈述的意图相反。

一个时间点的聚合值:

"Firefox" : 0
"Excel" : 0

似乎对应于这些索引键,这些键在您进行聚合时会丢失。

但是,如果您决定使用聚合,代码将如下所示:

# reading in data:

import pandas as pd
import json
json_data = {
"0": {
"ProcessName": "Firefox",
"time": "2019-07-12T00:00:00",
"timeFloat": 1562882400.0,
"internal_time": 0.0,
"counter": 0
},
"1": {
"ProcessName": "Excel",
"time": "2019-07-12T00:00:00",
"timeFloat": 1562882400.0,
"internal_time": 0.0,
"counter": 0
},
"2": {
"ProcessName": "Word",
"time": "2019-07-12T01:30:00",
"timeFloat": 1562888000.0,
"internal_time": 1.5533333333,
"counter": 0
}}

df = pd.DataFrame.from_dict(json_data)
df = df.T
df.set_index(["ProcessName", 'time', 'timeFloat', 'internal_time', 'counter'])

# processing:
ddf = df.groupby(['time', 'timeFloat', 'internal_time'], as_index=False).agg(lambda x: list(x))
ddf['Processes'] = ddf.apply(lambda r: dict(zip(r['ProcessName'], r['counter'])), axis=1)
ddf = ddf.drop(['ProcessName', 'counter'], axis=1).

# printing the result:
json2 = json.loads(ddf.to_json(orient="records"))
print(json.dumps(json2, indent=4, sort_keys=True))

结果:

[
{
"Processes": {
"Excel": 0,
"Firefox": 0
},
"internal_time": 0.0,
"time": "2019-07-12T00:00:00",
"timeFloat": 1562882400.0
},
{
"Processes": {
"Word": 0
},
"internal_time": 1.5533333333,
"time": "2019-07-12T01:30:00",
"timeFloat": 1562888000.0
}
]

关于python - 如何在 Python 中从 pandas 数据框创建嵌套的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57040398/

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