Python 嵌套JSON文件展平并存储为CSV
我正在尝试将json文件转换为csv格式,下面是json文件的一个片段(sample3.json):Python 嵌套JSON文件展平并存储为CSV,python,Python,我正在尝试将json文件转换为csv格式,下面是json文件的一个片段(sample3.json): { “x”:{ “-tst1”:{ “da”:“8C”, “d”:“df4”, “h”:0, "一":, “s”:假, “t”:1501394756245 }, “-tst2”:{ “da”:“8C”, “d”:“\\df&*”, “h”:0, “i”:0, “s”:是的, “t”:1501394946296 } } } 这些是我尝试过的一些解决方案,但我不想让它们中的任何一个起作用:
{
“x”:{
“-tst1”:{
“da”:“8C”,
“d”:“df4”,
“h”:0,
"一":,
“s”:假,
“t”:1501394756245
},
“-tst2”:{
“da”:“8C”,
“d”:“\\df&*”,
“h”:0,
“i”:0,
“s”:是的,
“t”:1501394946296
}
}
}
这些是我尝试过的一些解决方案,但我不想让它们中的任何一个起作用:
我怎样才能得到一个像下面这样可以导出为csv的表
我尝试了几种不同的方法,但我没有取得任何进展…我得到的最远的结果是将值放入列表中
看起来很简单,但我更喜欢sql而不是python
谢谢你的帮助
import json
import ast
import pandas as pd
from pprint import pprint
from pandas.io.json import json_normalize
import itertools
from openpyxl import load_workbook
import openpyxl
from collections import Counter
test = open('sample3.json').read()
data = json.loads(test)
vals = data['x']
for key in vals.keys():
v = vals.values
t = list(vals.values())
#pd.DataFrame(t)
#print(type(t))
#print('Separator')
#print(type(v))
df = pd.DataFrame.from_items(t) #error: Not enough values to unpack...expected 2, got 1.
print(df)
我不知道你想要什么,但这对你有用吗
import json
import pandas as pd
with open('sample3.json') as f: # this ensures opening and closing file
a = json.loads(f.read())
data = a["x"]
df = pd.DataFrame(data)
print(df.transpose())
我的输出:
d da h i s t
-tst1 df4 8C 0 1 False 1501394756245
-tst2 df&* 8C 0 0 True 1501394946296
然后,您可以执行以下操作:
df.transpose().to_csv('myfilename.csv')
针对您的评论,您可以:
import json
import pandas as pd
a = """{"z" : { "y" : { "x" : { "-v" : { "d1" : "8C:F", "d2" : "8.0", "t" : 3, "x" : 45 }, "-u" : { "d1" : "8C", "d2" : "8.00", "t" : 5, "x" : 45 } } } }}"""
js = json.loads(a)
print pd.DataFrame.from_dict(js['z']['y']['x'], orient='index')
(您发布的json缺少一个
}
,但我认为这是一个复制/粘贴错误)我不确定您想要什么,但这对您有用吗
import json
import pandas as pd
with open('sample3.json') as f: # this ensures opening and closing file
a = json.loads(f.read())
data = a["x"]
df = pd.DataFrame(data)
print(df.transpose())
我的输出:
d da h i s t
-tst1 df4 8C 0 1 False 1501394756245
-tst2 df&* 8C 0 0 True 1501394946296
然后,您可以执行以下操作:
df.transpose().to_csv('myfilename.csv')
针对您的评论,您可以:
import json
import pandas as pd
a = """{"z" : { "y" : { "x" : { "-v" : { "d1" : "8C:F", "d2" : "8.0", "t" : 3, "x" : 45 }, "-u" : { "d1" : "8C", "d2" : "8.00", "t" : 5, "x" : 45 } } } }}"""
js = json.loads(a)
print pd.DataFrame.from_dict(js['z']['y']['x'], orient='index')
(您发布的json缺少一个
}
,但我认为这是一个复制/粘贴错误)仅供参考,我知道我没有使用所有库,我只是从我尝试过的所有解决方案中积累了它们。可能重复:可能重复仅供参考,我知道我没有使用所有库,我刚刚从我尝试过的所有解决方案中积累了它们。可能重复:可能重复是的!!这太完美了。这正是我想要的……这能有效地扩展到大型数据集吗?对于某些“大型”和“高效”值,是的。:)我能麻烦你再帮点忙吗?我有第二个json文件,如`{“z”:{“y”:{“x”:{“-v”:{“d1”:“8C:F”,“d2”:“8.0”,“t”:3,“x”:45},“-u”:{“d1”:“8C”,“d2”:“8.00”,“t”:5,“x”:45}}`您提供的脚本可以修改为这种文件格式吗?@Gee您必须取消嵌套-我会将代码添加到我的回答中是!!这太完美了。这正是我想要的……这能有效地扩展到大型数据集吗?对于某些“大型”和“高效”值,是的。:)我能麻烦你再帮点忙吗?我有第二个json文件,如`{“z”:{“y”:{“x”:{“-v”:{“d1”:“8C:F”,“d2”:“8.0”,“t”:3,“x”:45},“-u”:{“d1”:“8C”,“d2”:“8.00”,“t”:5,“x”:45}}`您提供的脚本可以修改为这种文件格式吗?@Gee您必须取消嵌套它-我会将代码添加到我的答案中