【问题标题】:Get affiliation information from multiple authors in a loop循环获取多位作者的隶属关系信息
【发布时间】:2020-11-19 12:07:40
【问题描述】:

目前正在使用 pybliometrics (scopus) 我想创建一个循环,让我可以从多个作者那里获取隶属关系信息。

基本上,这就是我的循环的想法。我如何对许多作者做到这一点?

from pybliometrics.scopus import AuthorRetrieval
import pandas as pd
import numpy as np  

au = AuthorRetrieval(authorid)
au.affiliation_history
au.identifier
x = au.identifier

refs2 = au.affiliation_history
len(refs2)
refs2
df = pd.DataFrame(refs2)
df.columns
a_history = df
df['authorid'] = x

#moving authorid to 0
cols = list(df)
cols.insert(0, cols.pop(cols.index('authorid')))
df = df.loc[:, cols]

df.to_excel("af_historyfinal.xlsx")

【问题讨论】:

  • 感谢您的帮助!我的问题是,在您帮助我修复的代码中具有相同的想法,我计划检索数千个作者的历史隶属关系。但是,鉴于数据检索限制,我不清楚如何进行正确的循环。

标签: python scopus pybliometrics


【解决方案1】:

将您的代码变成多个作者 ID 的循环?没有比这更容易的了。假设AUTHOR_IDS 等于 7004212771 和 57209617104:

import pandas as pd  
from pybliometrics.scopus import AuthorRetrieval

def retrieve_affiliations(auth_id):
    """Author's affiliation history from Scopus as DataFrame."""
    au = AuthorRetrieval(authorid)
    df = pd.DataFrame(au.affiliation_history)
    df["auth_id"] = au.identifier
    return df

AUTHOR_IDS = [7004212771, 57209617104]

# Option 1, for few IDs
df = pd.concat([retrieve_affiliations(a) for a in AUTHOR_IDS])

# Option 2, for many IDs
df = pd.DataFrame():
for a in AUTHOR_IDS:
    df = df.append(retrieve_affiliations(a))

# Have author ID as first column
df = df.set_index("authorid").reset_index()    
df.to_excel("af_historyfinal.xlsx", index=False)

例如,如果您的 ID 位于名为“input.csv”的逗号分隔文件中,其中有一列名为“authors”,那么您可以从

AUTHOR_IDS = pd.read_csv("input.csv")["authors"].unique()

【讨论】:

  • 效果很好!我非常感谢您的工作和提供帮助的意愿。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-14
相关资源
最近更新 更多