python - 在 Pandas 框架中,作为列表的列条目分解其项目,以便它们单独垂直列出
问题描述
我已经为此工作了几个小时,试图弄清楚如何制作这个 json
{
"method": "STATIC",
"type": "IEEE_8023AD",
"dns_search_domains": [
"lab.local1",
"lab.local2",
"lab.local3"
],
"dns_servers": [
"11.12.200.1",
"11.12.200.2",
"11.12.200.3"
]
}
在熊猫中转换为这个输出
method type dns_search_domains dns_servers
0 STATIC IEEE_8023AD lab.local1 11.12.200.1
lab.local2 11.12.200.2
lab.local3 11.12.200.3
相反,我能想到的最好的就是这个。我一直在 dns_search_domains 和 dns_servers 列下获取此列表格式。
method type dns_search_domains dns_servers
0 STATIC IEEE_8023AD [lab.local1, lab.local2, lab.local3] [11.12.200.1, 11.12.200.2, 11.12.200.3]
看起来列表格式不允许我将项目单独分解,以便它们可以在其列下垂直输出。
这是基本代码。
import json
import pandas as pd
from pandas.io.json import json_normalize
with open ('network_conf_get.json') as f:
d = json.load(f)
data = json_normalize(d)
pd.set_option('display.max_colwidth', 0)
pd.set_option('display.max_columns', None)
pd.set_option('expand_frame_repr', False)
print(pd.DataFrame(data))
解决方案
您可以将数据框构造函数传递给set_index
pd.DataFrame(d).set_index(['method','type'])
Out[229]:
dns_search_domains dns_servers
method type
STATIC IEEE_8023AD lab.local1 11.12.200.1
IEEE_8023AD lab.local2 11.12.200.2
IEEE_8023AD lab.local3 11.12.200.3
推荐阅读
- python - 无法从Python的输入中找到字典中是否存在值
- ffmpeg - ffmpeg,/dev/video0,-f 甲板链接
- python - 尝试 pi day nn,没有正确预测
- .net - 将 DateTime 转换为 UTC 日期时间
- javascript - 如何在 CSS 或 Javascript 中有效地创建按时间顺序排列的动画时间线?
- autodesk-forge - Autodesk Forge 的 Reality Capture API 生成的高程图 geotiff 的内容是什么?
- c# - C#中的SQL Server多命令异常捕获
- c++ - Qtimer 不工作。我认为它没有更新
- android - 使用 Xdebug 在 nextcloud 中调试文件下载功能时超时
- ios - 将 applicationIconBadgeNumber 设置为零时,iOS 徽章未清除