Перестановка общих значений в 2 кадра данных - PullRequest
0 голосов
/ 29 марта 2019

У меня есть 2 кадра данных, как показано ниже

df1

PMID       References
12755609    2755610
2844048     987

df2

 PMID       Authors
 2844048    CohKBJKenUP
 2844048    Markar AB
 12755609    GuarnerUJ
 12755609    RoshanRJ
 2755610     John HV
 2755610     Tony KR
 987         Maroi KK

Я хотел сравнить столбец из df1 (PMID & References) с PMID df2, если есть совпадающие значения, значения в столбце df (PMID & References) будут заменены авторами. Каждый PMID или ссылки из df1 могут иметь несколько авторов в df2, например, 2844048 имеет 2 двух авторов (CohKBJKenUP, Markar AB), поэтому результаты должны содержать все возможные комбинации

Возможный вывод похож на

PMID       References
GuarnerUJ   John HV
RoshanRJ    John HV
GuarnerUJ   Tony KR
RoshanRJ    Tony KR
CohKBJKenUP Maroi KK
Markar AB   Maroi KK

Я пытался использовать цикл for, но он вызывает проблему с памятью из-за большого размера файла.

Я тоже пробовал это, но это выдало ошибку

Reindexing only valid with uniquely valued Index objects

df1['PMID'] = df1['PMID'].map(df2.set_index('PMID')['author'])

Пожалуйста, предложите возможность получить ожидаемые результаты.

1 Ответ

0 голосов
/ 29 марта 2019

Это у вас работает?

df = df1.merge(df2, on='PMID')
df.drop(['PMID'],axis=1,inplace=True)
df = df.merge(df2,left_on='References',right_on='PMID')
df.drop(['References','PMID'],axis=1,inplace=True)
df.columns = ['PMID','References']
print(df)


    PMID        References
0   GuarnerUJ   John HV
1   GuarnerUJ   Tony KR
2   RoshanRJ    John HV
3   RoshanRJ    Tony KR
4   CohKBJKenUP Maroi KK
5   Markar AB   Maroi KK
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...