【发布时间】:2019-09-24 21:18:30
【问题描述】:
我是 python 新手,我目前正在尝试将我的 json 文件转换为 csv 文件并转换为所需的格式
我尝试查看其他示例和问题,但仍然找不到答案。
当前的python代码
import json
import pandas as pd
df=pd.read_json("unifi.json")
print(df)
df.to_csv('results2.csv')
print("success")
Json 数据
[
{
"by_app": [
{
"app": 5,
"cat": 3,
"clients": [
{
"mac": "ec:1f:72:fa:75:77",
"rx_bytes": 372,
"rx_packets": 3,
"tx_bytes": 1361,
"tx_packets": 4
},
{
"mac": "f0:9f:c2:6c:5b:d0",
"rx_bytes": 56896,
"rx_packets": 191,
"tx_bytes": 210622,
"tx_packets": 460
}
],
"known_clients": 2,
"rx_bytes": 60837,
"rx_packets": 203,
"tx_bytes": 213435,
"tx_packets": 475
},
{
"app": 94,
"cat": 19,
"clients": [
{
"mac": "30:07:4d:38:ae:e2",
"rx_bytes": 64654,
"rx_packets": 147,
"tx_bytes": 19533,
"tx_packets": 138
},
{
"mac": "ec:1f:72:fa:75:77",
"rx_bytes": 42416,
"rx_packets": 68,
"tx_bytes": 12419,
"tx_packets": 74
}
],
"known_clients": 2,
"rx_bytes": 5421117,
"rx_packets": 4779,
"tx_bytes": 243979,
"tx_packets": 2377
},
{
"app": 162,
"cat": 20,
"rx_bytes": 3295298,
"rx_packets": 2935,
"tx_bytes": 171266,
"tx_packets": 2032
},
{
"app": 209,
"cat": 13,
"rx_bytes": 21763,
"rx_packets": 38,
"tx_bytes": 4433,
"tx_packets": 30
},
{
"app": 222,
"cat": 13,
"clients": [
{
"mac": "30:07:4d:38:ae:e2",
"rx_bytes": 300,
"rx_packets": 3,
"tx_bytes": 503,
"tx_packets": 4
},
{
"mac": "ec:1f:72:fa:75:77",
"rx_bytes": 3452,
"rx_packets": 24,
"tx_bytes": 4176,
"tx_packets": 26
},
{
"mac": "f0:9f:c2:6c:5b:d0",
"rx_bytes": 0,
"rx_packets": 0,
"tx_bytes": 396,
"tx_packets": 6
}
],
"known_clients": 3,
"rx_bytes": 4742,
"rx_packets": 32,
"tx_bytes": 5787,
"tx_packets": 42
},
{
"app": 167,
"cat": 20,
"clients": [
{
"mac": "ec:1f:72:fa:75:77",
"rx_bytes": 5761,
"rx_packets": 14,
"tx_bytes": 1574,
"tx_packets": 13
}
],
"known_clients": 1,
"rx_bytes": 138686,
"rx_packets": 237,
"tx_bytes": 31821,
"tx_packets": 155
},
{
"app": 112,
"cat": 4,
"clients": [
{
"mac": "ec:1f:72:fa:75:77",
"rx_bytes": 135381,
"rx_packets": 161,
"tx_bytes": 42596,
"tx_packets": 140
}
],
"known_clients": 1,
"rx_bytes": 135381,
"rx_packets": 161,
"tx_bytes": 42596,
"tx_packets": 140
},
{
"app": 62,
"cat": 8,
"rx_bytes": 7219,
"rx_packets": 10,
"tx_bytes": 1153,
"tx_packets": 9
},
{
"app": 185,
"cat": 20,
"rx_bytes": 4733026,
"rx_packets": 4666,
"tx_bytes": 728026,
"tx_packets": 2688
},
{
"app": 130,
"cat": 4,
"clients": [
{
"mac": "30:07:4d:38:ae:e2",
"rx_bytes": 113871,
"rx_packets": 121,
"tx_bytes": 16442,
"tx_packets": 116
}
],
"known_clients": 1,
"rx_bytes": 113871,
"rx_packets": 121,
"tx_bytes": 16442,
"tx_packets": 116
},
{
"app": 65535,
"cat": 255,
"clients": [
{
"mac": "30:07:4d:38:ae:e2",
"rx_bytes": 8195,
"rx_packets": 27,
"tx_bytes": 3834,
"tx_packets": 25
},
{
"mac": "ec:1f:72:fa:75:77",
"rx_bytes": 27338,
"rx_packets": 93,
"tx_bytes": 11330,
"tx_packets": 86
},
{
"mac": "f0:9f:c2:6c:5b:d0",
"rx_bytes": 19974,
"rx_packets": 181,
"tx_bytes": 2447,
"tx_packets": 34
},
{
"mac": "f0:9f:c2:c6:63:5a",
"rx_bytes": 90,
"rx_packets": 1,
"tx_bytes": 0,
"tx_packets": 0
}
],
"known_clients": 4,
"rx_bytes": 6417768,
"rx_packets": 10254,
"tx_bytes": 1193280,
"tx_packets": 7326
},
{
"app": 190,
"cat": 13,
"clients": [
{
"mac": "ec:1f:72:fa:75:77",
"rx_bytes": 25041,
"rx_packets": 34,
"tx_bytes": 32420,
"tx_packets": 49
}
],
"known_clients": 1,
"rx_bytes": 25041,
"rx_packets": 34,
"tx_bytes": 32420,
"tx_packets": 49
},
{
"app": 106,
"cat": 18,
"clients": [
{
"mac": "f0:9f:c2:6c:5b:d0",
"rx_bytes": 360,
"rx_packets": 4,
"tx_bytes": 360,
"tx_packets": 4
},
{
"mac": "f0:9f:c2:c6:63:5a",
"rx_bytes": 90,
"rx_packets": 1,
"tx_bytes": 180,
"tx_packets": 2
}
],
"known_clients": 2,
"rx_bytes": 450,
"rx_packets": 5,
"tx_bytes": 540,
"tx_packets": 6
},
{
"app": 1,
"cat": 6,
"rx_bytes": 23370,
"rx_packets": 35,
"tx_bytes": 4388,
"tx_packets": 26
},
{
"app": 61,
"cat": 9,
"rx_bytes": 4825,
"rx_packets": 24,
"tx_bytes": 2040,
"tx_packets": 24
},
{
"app": 32,
"cat": 17,
"rx_bytes": 27068,
"rx_packets": 42,
"tx_bytes": 6002,
"tx_packets": 27
},
{
"app": 3,
"cat": 24,
"clients": [
{
"mac": "30:07:4d:38:ae:e2",
"rx_bytes": 3791,
"rx_packets": 8,
"tx_bytes": 1258,
"tx_packets": 9
},
{
"mac": "ec:1f:72:fa:75:77",
"rx_bytes": 25745,
"rx_packets": 109,
"tx_bytes": 21603,
"tx_packets": 104
}
],
"known_clients": 2,
"rx_bytes": 29536,
"rx_packets": 117,
"tx_bytes": 22861,
"tx_packets": 113
},
{
"app": 63,
"cat": 18,
"rx_bytes": 0,
"rx_packets": 0,
"tx_bytes": 114,
"tx_packets": 2
},
{
"app": 21,
"cat": 3,
"rx_bytes": 41992,
"rx_packets": 53,
"tx_bytes": 9788,
"tx_packets": 34
},
{
"app": 21,
"cat": 14,
"rx_bytes": 31920,
"rx_packets": 114,
"tx_bytes": 19203,
"tx_packets": 82
}
]
}
]
当前输出为
|by app
|[{'app': 5, 'cat': 3,...
预期输出是
|app |cat |rx_byte|rx_packets|....
|5 |3 |60837 |203 |....
我试图将列分成单独的列,而不是将它们集中到 1 列中
【问题讨论】:
-
扁平化首先将字典放入列表中......?
-
您的 json 对象在顶层具有三个键,csv 文件需要二维数据,但您有多个维度。首先你有 3 个根级键,然后每个键都有它的对象列表。那么,您的 csv 与这些数据究竟应该是什么样子?
-
我只是想将所有内容分成一列,每列都有类似的标题,如数据库表
-
也许可以先查看以下链接以展平您的 json,然后使用 pandas 的 datafram to_csv 方法: