我正在使用GoToWebinar API从网络研讨会中获取数据。 我做了所有事情,但脚本中唯一缺少的是将Json转换为大熊猫的数据框,以便我可以进行分析。
我得到的Json文件具有以下结构(我屏蔽了数据):
{
"_embedded": {
"webinars": [
{
"webinarKey": "GGGGGGGGGGGGGGGG",
"webinarId": "BBBBBBBBBBB",
"organizerKey": "RRRRRRRRRRRRR",
"omid": "RRRRRRRRRRR",
"accountKey": "WWWWWWWWWWW",
"recurrenceKey": "EEEEEEEEEEEEEEEEE21",
"subject": "LEEEEEEEEEESEon",
"description": "EEEEEEEEEEEEE",
"times": [
{
"startTime": "2019-07-01T13:00:00Z",
"endTime": "2019-07-01T13:30:00Z"
}
],
"timeZone": "America/New_York",
"locale": "en_US",
"status": "UPDATED",
"approvalType": "AUTOMATIC",
"registrationUrl": "https://attendee.gotowebinar.com/rt/XXXXXXXXXXXXXXXX",
"impromptu": false,
"isPasswordProtected": false,
"recurrenceType": "series",
"experienceType": "broadcast",
"registrationSettingsKey": "DDDDDDDD"
},
{
"webinarKey": "GGGGGGGGGGGGGGGG",
"webinarId": "BBBBBBBBBBB",
"organizerKey": "RRRRRRRRRRRRR",
"omid": "RRRRRRRRRRR",
"accountKey": "WWWWWWWWWWW",
"recurrenceKey": "EEEEEEEEEEEEEEEEE21",
"subject": "LEEEEEEEEEESEon",
"description": "EEEEEEEEEEEEE",
"times": [
{
"startTime": "2019-07-01T13:00:00Z",
"endTime": "2019-07-01T13:30:00Z"
}
],
"timeZone": "America/New_York",
"locale": "en_US",
"status": "UPDATED",
"approvalType": "AUTOMATIC",
"registrationUrl": "https://attendee.gotowebinar.com/rt/XXXXXXXXXXXXXXXX",
"impromptu": false,
"isPasswordProtected": false,
"recurrenceType": "series",
"experienceType": "broadcast",
"registrationSettingsKey": "DDDDDDDD"
},
..other webinars.....
]
},
"page": {
"size": 10,
"totalElements": 26,
"totalPages": 3,
"number": 0
}
}
这是我的代码,我基本上不知道如何进行。 我尝试了DataFrame.from_dict,read_json以及此处提供的解决方案:Convert JSON data from Request into Pandas DataFrame
'''Getting the webinar lists'''
base_url = 'https://api.getgo.com/G2W/rest/v2'
##setting up paramters
param_1 = '2019-07-01T10%3A00%3A00Z'
param_2 = '2019-09-01T10%3A00%3A00Z'
##buidling the path
path = base_url + '/accounts/' + account_key + '/webinars?fromTime=' + param_1 +'&toTime=' + param_2
print(path)
headers = {'accept' : 'application/json' , 'Authorization' : access_token}
webinars_req = session.get(path, headers = headers)
webinars_json = webinars_req.json()
我想要一个具有所有内部标签(例如webinarkey,webinarid等)的数据框作为具有对应值的列...
希望你们能提供帮助!
答案 0 :(得分:0)
您可以尝试requests
模块
import requests
webinars_req = requests.get(path, headers = headers)
df = pd.read_json(webinars_req.text, ignore_index=True)
答案 1 :(得分:0)
好吧,我做到了! 基本上,我只需要在网络研讨会级别从字典中获取列表,然后将其放入数据框即可:
webinars_json = webinars_req.json()
##put all webinars data in a dataframe
webinars_list = webinars_json.get('_embedded').get('webinars')
df_webinars = pd.DataFrame(webinars_list)
效果很好:-) 希望这会帮助某人
答案 2 :(得分:0)
js = { "_embedded": { "webinars": [ { "webinarKey": "GGGGGGGGGGGGGGGG", "webinarId": "BBBBBBBBBBB", "organizerKey": "RRRRRRRRRRRRR", "omid": "RRRRRRRRRRR", "accountKey": "WWWWWWWWWWW", "recurrenceKey": "EEEEEEEEEEEEEEEEE21", "subject": "LEEEEEEEEEESEon", "description": "EEEEEEEEEEEEE", "times": [ { "startTime": "2019-07-01T13:00:00Z", "endTime": "2019-07-01T13:30:00Z" } ], "timeZone": "America/New_York", "locale": "en_US", "status": "UPDATED", "approvalType": "AUTOMATIC", "registrationUrl": "https://attendee.gotowebinar.com/rt/XXXXXXXXXXXXXXXX", "impromptu": "false", "isPasswordProtected": "false", "recurrenceType": "series", "experienceType": "broadcast", "registrationSettingsKey": "DDDDDDDD" }, { "webinarKey": "GGGGGGGGGGGGGGGG", "webinarId": "BBBBBBBBBBB", "organizerKey": "RRRRRRRRRRRRR", "omid": "RRRRRRRRRRR", "accountKey": "WWWWWWWWWWW", "recurrenceKey": "EEEEEEEEEEEEEEEEE21", "subject": "LEEEEEEEEEESEon", "description": "EEEEEEEEEEEEE", "times": [ { "startTime": "2019-07-01T13:00:00Z", "endTime": "2019-07-01T13:30:00Z" } ], "timeZone": "America/New_York", "locale": "en_US", "status": "UPDATED", "approvalType": "AUTOMATIC", "registrationUrl": "https://attendee.gotowebinar.com/rt/XXXXXXXXXXXXXXXX", "impromptu": "false", "isPasswordProtected": "false", "recurrenceType": "series", "experienceType": "broadcast", "registrationSettingsKey": "DDDDDDDD" } ] } }
import json
from pandas.io.json import json_normalize
s = json.dumps(js) #convert dict to string
data = json.loads(s) #load str as json
#also look at meta arguments for json_normalize
df = json_normalize(data=data['_embedded'], record_path=['webinars'])