以下是我的输出。如您所见,在我的回答中,儿童显然是一个(字典)字段。
此代码完美无缺,但它保留了所有嵌套字段(列表或字典):
user = ""
password = getattr(config, 'password')
url = ''
req = requests.post(url = url, auth=(user, password))
print('Authentication succesful!/n')
ans = req.json()
#Transform resultList into Pandas DF
solr_df = pd.DataFrame.from_dict(json_normalize(ans['resultList']), orient='columns')
我想要规范化"children"
字段,所以我做了以下操作,而不是上面的最后一行:
solr_df = pd.DataFrame()
for record in ans['resultList']:
df = pd.DataFrame(record['children'])
df['contactId'] = record['contactId']
solr_df = solr_df.append(df)
但是,我收到KeyError: 'children'
。
有谁能建议我做错了什么?
答案 0 :(得分:1)
由于消息是KeyError: 'children'
,因此错误的唯一可能原因是其中一个词中缺少子键。您可以使用try / except块来避免异常,也可以传入密钥的默认值,例如:
solr_df = pd.DataFrame()
for record in ans['resultList']:
df = pd.DataFrame(record.get('children', {})
df['contactId'] = record.get('contactId')
solr_df = solr_df.append(df)
答案 1 :(得分:1)
您的其中一条记录可能错过了“孩子们”。 key所以捕获该异常并继续处理输出的其余部分。
solr_df = pd.DataFrame()
for record in ans['resultList']:
try:
df = pd.DataFrame(record['children'])
df['contactId'] = record['contactId']
solr_df = solr_df.append(df)
except KeyError as e:
print("Record {} triggered {}".format(record, e))