我试图将json文件转换为csv格式,这里是json文件的一个片段(sample3.json):
{
"x" : {
"-tst1" : {
"da" : "8C",
"d" : "df4",
"h" : 0,
"i" : 1,
"s" : false,
"t" : 1501394756245
},
"-tst2" : {
"da" : "8C",
"d" : "\\df&*",
"h" : 0,
"i" : 0,
"s" : true,
"t" : 1501394946296
}
}
}
这些是我尝试过的一些解决方案,但我无法让其中任何一个工作: Convert list into a pandas data frame DataFrame from list of list Convert Nested JSON to Excel using Python
如何获得类似下面的表格,我可以导出到csv?
我尝试了几种不同的方式,但我没有得到任何地方......我所获得的最远的就是将这些价值放入一个列表中。
看起来它很简单,但我更像是一个没有python的sql人。
我感谢任何帮助。
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)
答案 0 :(得分:1)
我不确定你想要什么,但这对你有用吗?
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缺少}
,但我认为这是一个复制/粘贴错误)