将JSON数据提取到关系表中

时间:2019-07-25 10:14:05

标签: python json pandas

我有一个来自YouTube的iframe API的JSON文件,需要进行预处理。我想将此JSON数据放入pandas数据框中,其中每个JSON键将是一列,每个记录的“事件”应是一个新行。

我能够使用 read_json 将数据作为数据帧加载,但与此同时,每个事件的键都显示为数组。

这是我的JSON数据的样子:

{  
   "events":[  
      {  
         "timemillis":1563467463580,
         "date":"18.7.2019",
         "time":"18:31:03,580",
         "name":"Player is loading",
         "data":""
      },
      {  
         "timemillis":1563467463668,
         "date":"18.7.2019",
         "time":"18:31:03,668",
         "name":"Player is loaded",
         "data":"5"
      }
]
}

这就是我将其转换为数据框的过程:

data=pd.read_json("file.json")
df=pd.DataFrame(data)
print(df)

输出看起来像这样:

0  {'timemillis': 1563469276604, 'date': '18.7.20...
1  {'timemillis': 1563469276694, 'date': '18.7.20...
...

如何将输出转换为一个表,在这些表中,这些键具有单独的列,例如'timemmillis','date','name'等?我以前从未使用过JSON,所以有点困惑。

2 个答案:

答案 0 :(得分:2)

values_list

结果

import pandas as pd
import json

data = {  
   "events":[  
      {  
         "timemillis":1563467463580,
         "date":"18.7.2019",
         "time":"18:31:03,580",
         "name":"Player is loading",
         "data":""
      },
      {  
         "timemillis":1563467463668,
         "date":"18.7.2019",
         "time":"18:31:03,668",
         "name":"Player is loaded",
         "data":"5"
      }
]
}

# or read data from file
# rather than reading file directly to pandas dataframe read as json
# data=pd.read_json("file.json")


with open('file.json') as json_file:
    data = json.load(json_file)
    df=pd.DataFrame(data['events'])
    print(df)

答案 1 :(得分:0)

import pandas as pd

df=pd.read_json("file.json",orient='columns')
rows = []
for i,r in df.iterrows():
    rows.append({'eventid':i+1,'timemillis':r['events']['timemillis'],'name':r['events']['name']})
df = pd.DataFrame(rows)
print(df)

现在您可以将此df插入数据库