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

时间:2017-08-02 14:07:45

标签: python

我试图将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?

Table

我尝试了几种不同的方式,但我没有得到任何地方......我所获得的最远的就是将这些价值放入一个列表中。

看起来它很简单,但我更像是一个没有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)

1 个答案:

答案 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缺少},但我认为这是一个复制/粘贴错误)