У меня есть кадр данных панд, как показано здесь.В кадре данных есть еще много столбцов, которые не нужны для этой задачи.
sentence token tokenID entity1 entity2 relation
1 a 0 NaN NaN NaN
1 b 1 NaN NaN NaN
1 c 2 NaN NaN NaN
1 d 3 NaN NaN NaN
1 e 4 NaN NaN NaN
1 f 5 NaN NaN NaN
1 g 6 NaN NaN NaN
1 h 7 NaN NaN NaN
1 NaN NaN 0 4 A
1 NaN NaN 2 6 B
Все токены с одинаковым значением для предложения принадлежат одному и тому же предложению.
В двух строках ниже содержится информация о предложениях.Значения в entity1
(и entity2
) представляют соответствующие tokenID
.В этом случае entity1=0
, что означает соответствующий токен с tokenID=0
.
Теперь я хочу вернуть список с каждым отдельным отношением в кадре:
[sentence, token1, token2, relation]
Значение в моем примере:
[1, a, e, A] and [1, c, g, B]
Я пытался написать функцию:
def sol():
op = [sentence, entity1, entity2, relations]
mi = df[["sentence","entity1","entity2"]]
ba = df.loc[df.sentence.isin(mi.sentence) & df.tokenID.isin(mia.entity1)]
ba2 = df.loc[df.sentence.isin(mi.sentence) & df.tokenID.isin(mia.entity2)]
op[1] = ba.token
op[2] = ba2.token
но это не сработало, как я планировал.
Есть идеи?