我使用 au.affiliation_history 从作者 ID 列表中获取从属历史。它工作得很好,但现在我试图将隶属历史与研究人员在机构任职的年份配对,出现在隶属历史结果中。
但是,我找不到这样做的方法。有可能做到这一点吗?如果是这样,您能否给我一个提示或想法,我该如何实现这一目标?
我使用 au.affiliation_history 从作者 ID 列表中获取从属历史。它工作得很好,但现在我试图将隶属历史与研究人员在机构任职的年份配对,出现在隶属历史结果中。
但是,我找不到这样做的方法。有可能做到这一点吗?如果是这样,您能否给我一个提示或想法,我该如何实现这一目标?
遗憾的是,Scopus 在 scopus.com 上的作者资料中共享的信息与他们通过作者检索 API 共享的信息不同。我认为获得年度隶属关系的唯一方法是从您从 Scopus 搜索 API 获得的出版物中提取它们。
from collections import defaultdict
from pybliometrics.scopus import ScopusSearch
AUTHOR = "7004212771"
q = f"AU-ID({AUTHOR})"
s = ScopusSearch(q)
yearly_affs = defaultdict(lambda: list())
for pub in s.results:
year = pub.coverDate[:4]
auth_idx = pub.author_ids.split(";").index(AUTHOR)
affs = pub.author_afids.split(";")[auth_idx].split("-")
yearly_affs[year].extend(affs)
yearly_affs
然后包含该年度出版物中记录的所有从属关系的列表。
自然,该列表将包含重复项。如果您不喜欢这样,请使用set()
andupdate()
代替。
用于多个从属关系的.split("-")
部分affs
(当研究人员在一篇论文上报告多个从属关系时。您可能希望使用第一个报告的代替。然后[0]
在最后和append()
下一行使用。
此外,可能会有差距。我建议将其yearly_affs
转换为 pandas DataFrame,选择每年的主要隶属关系,然后向前或向后填补空白。