Получение информации о принадлежности от нескольких авторов в цикле

#python #scopus #pybliometrics

#python #scopus #pybliometrics

Вопрос:

В настоящее время работает с 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")
  

Комментарии:

1. Спасибо за вашу помощь! Моя проблема в том, что с той же идеей в коде, который вы помогли мне исправить, я планирую получить более тысячи ссылок на историю авторов. Однако мне не ясно, как выполнить правильный цикл, учитывая ограничения на извлечение данных.

Ответ №1:

Превращение вашего кода в цикл с несколькими идентификаторами авторов? Нет ничего проще, чем это. Допустим 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)
  

Если, скажем, ваши идентификаторы находятся в файле, разделенном запятыми, с именем «input.csv», с одним столбцом под названием «авторы», тогда вы начинаете с

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

Комментарии:

1. Это отлично работает! Я глубоко ценю вашу работу и готовность помочь.