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

问题描述 投票:0回答:2

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

代码有什么问题?

python pandas web-scraping
2个回答
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'} 

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']
© www.soinside.com 2019 - 2024. All rights reserved.