gpt4 book ai didi

python - 连接数据帧和 json-normalize 时遇到 "Dataframe constructor not properly called"错误

转载 作者:行者123 更新时间:2023-12-01 09:27:12 24 4
gpt4 key购买 nike

当我尝试连接数据帧值和字典时,我遇到错误

下面是我的示例 json

{
"creation-date": "Fri Mar 23 07:03:31 UTC 2018",
"scan-with-high-privileges": true,
"system-infos": {
"hostname": "vmDiscovery",
"domain": "aw4gb5ukuefulow5njy3bfktkc.rx.internal.cloudapp.net",
"os": "",
"os-details": {
"kernel-version": "Linux vmDiscovery 3.10.0-693.17.1.el7.x86_64 #1 SMP Sun Jan 14 10:36:03 EST 2018 x86_64 x86_64 x86_64 GNU/Linux",
"lsb-id": "",
"lsb-version-compliance": "",
"lsb-description": "",
"lsb-release": "",
"lsb-codename": ""
},
"cpu-count": 2,
"cpu-name": "Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz",
"total-memory": "4029248 kB",
"hw-details": {
"physical-virtual": "Virtual",
"vendor": "Microsoft Corporation",
"model": "7.0 (Virtual Machine)",
"age": "06/02/2017"
}
},
}

我正在尝试连接创建日期(第一行)和系统信息字典。

下面是代码:

import pandas as pd
import json
from pandas.io.json import json_normalize
from numpy.core.numeric import outer

with open("C:\\Users\\esrilka\\Documents\\jsonFiles\\jsonFiles\\Mynew.json") as fi:
d = json.load(fi)
df = d['creation-date']
works_data = json_normalize(data=d['system-infos'], record_path=['os-details'],
meta=['hostname', 'domain'])
result=pd.concat([works_data,df],axis=1)
result.to_csv("C:\\Users\\esrilka\\Documents\\jsonFiles\\sample.csv", index=False)

我收到以下错误:

Traceback (most recent call last):
File "C:\Users\esrilka\eclipse-workspace\My First PyDev Project\Newsample.py", line 11, in <module>
df = pd.DataFrame('creation-date')
File "C:\Users\esrilka\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\frame.py", line 404, in __init__
raise ValueError('DataFrame constructor not properly called!')
ValueError: DataFrame constructor not properly called!

最佳答案

删除df = pd.DataFrame('creation-date')。直接使用 json_normalize 来创建 DF。

例如:

import pandas as pd
import json
from pandas.io.json import json_normalize
d = {
"creation-date": "Fri Mar 23 07:03:31 UTC 2018",
"scan-with-high-privileges": True,
"system-infos": {
"hostname": "vmDiscovery",
"domain": "aw4gb5ukuefulow5njy3bfktkc.rx.internal.cloudapp.net",
"os": "",
"os-details": {
"kernel-version": "Linux vmDiscovery 3.10.0-693.17.1.el7.x86_64 #1 SMP Sun Jan 14 10:36:03 EST 2018 x86_64 x86_64 x86_64 GNU/Linux",
"lsb-id": "",
"lsb-version-compliance": "",
"lsb-description": "",
"lsb-release": "",
"lsb-codename": ""
},
"cpu-count": 2,
"cpu-name": "Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz",
"total-memory": "4029248 kB",
"hw-details": {
"physical-virtual": "Virtual",
"vendor": "Microsoft Corporation",
"model": "7.0 (Virtual Machine)",
"age": "06/02/2017"
}
},
}
df = json_normalize(data=d['system-infos'], record_path=['os-details'],
meta=['hostname', 'domain'])
print(df)

根据评论更新了代码片段。

df = pd.DataFrame({"creation-date": [d["creation-date"]]})
df1 = json_normalize(data=d['system-infos'], record_path=['os-details'],meta=['hostname', 'domain'])
print(pd.concat([df, df1], axis=1))

关于python - 连接数据帧和 json-normalize 时遇到 "Dataframe constructor not properly called"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50285229/

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