在python中打印时,附加到列表不起作用

时间:2018-03-05 02:28:22

标签: python pandas web-scraping

我试图从特定场所的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"]} 

代码有什么问题?

2 个答案:

答案 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'}