我试图从特定场所的DBLP API中提取作者和论文题目。这是我的方法:
import json
import pandas as pd
url = "http://dblp.uni-trier.de/search/publ/api?q=bioinformatics%20type%3AJournal_Articles%3A%20venue%3ABioinformatics%3A&h=1000&format=json"
obj = urllib2.urlopen(url)
data = json.load(obj)
df = pd.DataFrame()
df = df.append( data['result']['hits']['hit'], ignore_index=True)
mylist = []
for i, row in df.iterrows():
mylist.append( {"title": row["info"]["title"],
"au": row["info"]["authors"]["author"] } )
最后一行(作者部分)给出了错误。但是,当我尝试按如下方式打印时,它完全正常:
for i, row in df.iterrows():
print {"title": row["info"]["title"], "au":row["info"]["authors"]["author"]}
代码有什么问题?
答案 0 :(得分:1)
这应该为您提供所需的数据框,您可以将data
传递给数据框构造函数,而不是附加到
df = pd.DataFrame(data['result']['hits']['hit'])
d2 = pd.concat([df,pd.DataFrame(df['info'].tolist())],axis=1)
d2['au'] = d2.authors.apply(pd.Series)['author']
答案 1 :(得分:0)
错误是因为一行没有“作者”,你应该自己找到错误。
只需打印(行[“信息”]),就可以很容易地找到错误。
{'url': 'http://dblp.org/rec/journals/bioinformatics/X03', 'pages': '1867-1868', 'year': '2003', 'venue': 'Bioinformatics', 'key': 'journals/bioinformatics/X03', 'title': 'The Fourth Georgia Tech-University of Georgia International Conference in Bioinformatics - in silico Biology, Biological Networks, from Genomics to Epidemiology (November 13-16, 2003, Atlanta, Georgia, USA).', 'type': 'Journal Articles', 'volume': '19', 'number': '15'}