在Python中将JSON转换为数据帧
json格式的数据如下:在Python中将JSON转换为数据帧,python,json,python-3.x,pandas,dataframe,Python,Json,Python 3.x,Pandas,Dataframe,json格式的数据如下: dict = {"a":1,"b":2,"c":[{dic 1},{dic2},...so on]} dic 1的定义如下,如下面的字典列表所示 dic 1 = {"d":4,"e":{"f":6,"g":7},"h":{"i":9,"j":[10,11,12]},&qu
dict = {"a":1,"b":2,"c":[{dic 1},{dic2},...so on]}
dic 1的定义如下,如下面的字典列表所示
dic 1 = {"d":4,"e":{"f":6,"g":7},"h":{"i":9,"j":[10,11,12]},"m":13}
因此,整个json文件如下所示:
dict = {"a":1,"b":2,"c":[{"d":4,"e":{"f":6,"g":7},"h":{"i":9,"j":[10,11,12]},"m":13},{dic2},...so on]}
现在我想将这些数据存储为熊猫数据框,如下表所示,请给出您的建议
预期输出:
您的json的结构很复杂!简单点 您的代码无法运行,返回不可损坏的类型“dict”。要解决这个问题,只需解压缩主“dict”(即**dic1)中使用的任何变量 即使这样,也会以2行3列结束。为什么?键“c”中的数据是DICT列表,将列表项解释为列的数据。组织json文件 最后,避免使用“dict”来命名变量。试试这个
import json
import pandas as pd
from glob import glob
import matplotlib.pyplot as plt
#Convert json string to a flat python dictionary
def convert(x):
ob = json.loads(x)
for k, v in ob.copy().items():
if isinstance(v, list):
ob[k] = ','.join(v)
elif isinstance(v, dict):
for kk, vv in v.items():
ob['%s_%s' % (k, kk)] = vv
del ob[k]
return ob
for json_filename in glob('*.json'):
csv_filename = '%s.csv' % json_filename[:-5]
print('Converting %s to %s' % (json_filename, csv_filename))
df = pd.DataFrame([convert(line) for line in open(json_filename, encoding='utf-8')])
df.to_csv(csv_filename, encoding='utf-8', index=False)
#Convert csv to pdf
data1 = pd.read_csv('data1.csv')
data2 = pd.read_csv('data2.csv')
data3 = pd.read_csv('data3csv')
data4 = pd.read_csv('data4.csv')
data5 = pd.read_csv('data5.csv')
将所有词典以.json格式保存在文件中 像这样
import json
with open('dict.json', 'w') as fp:
json.dump(dict, fp,sort_keys=True, indent=4)
那就试试这个
df_json = pd.read_json(r'filepath\dict.json', lines=True)
如果它不起作用,我们将找出一个正则表达式来读取其中的复杂性。
别忘了导入pandas和json,pandas大部分时间都可以处理所有的复杂性。这比使用正则表达式和转换为csv文件所需的时间要短得多。您没有解释嵌套在dict中的dict列表中应该发生什么。。。请解释这一点,让问题有答案。。。在您的情况下,dict1和dict2中发生了什么具有相同的键?