Python 嵌套JSON文件展平并存储为CSV

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 } } } 这些是我尝试过的一些解决方案,但我不想让它们中的任何一个起作用:

我正在尝试将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
}
}   
}
这些是我尝试过的一些解决方案,但我不想让它们中的任何一个起作用:

我怎样才能得到一个像下面这样可以导出为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您必须取消嵌套它-我会将代码添加到我的答案中