我有一个熊猫数据框,如图所示。数据帧中还有许多列不是此任务所必需的。你知道吗
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
但没有按我的计划进行。你知道吗
有什么想法吗?你知道吗
您可以使用
pandas.merge
。首先将数据集分成两部分-然后将关系与标记映射合并以获得所需的输出-
这是通过两个自合并的一种方式。你知道吗
注意,在多个句子的情况下,你到底想要什么并不清楚。你知道吗
1.创建令牌和令牌ID的映射
2.替换实体列
试试这个
输出
相关问题 更多 >
编程相关推荐