擅长:python、mysql、java
<p>您可以使用<code>pandas.merge</code>。首先将数据集分成两部分-</p>
<ol>
<li>令牌映射</li>
<li>关系</li>
</ol>
<p>然后将关系与标记映射合并以获得所需的输出-</p>
<pre><code>df_token_map = df[df['token'].notnull()][['sentence', 'token', 'tokenID']]
df_relation_map = df[df['relation'].notnull()][['sentence', 'entity1', 'entity2', 'relation']]
df_relation_map = df_relation_map.rename(index=str, columns={'entity1' : 'tokenID'}).merge(df_token_map.rename(index=str, columns={'token':'entity1'}), on=['sentence','tokenID'], how='left').drop('tokenID', axis=1)
df_relation_map = df_relation_map.rename(index=str, columns={'entity2' : 'tokenID'}).merge(df_token_map.rename(index=str, columns={'token':'entity2'}), on=['sentence','tokenID'], how='left').drop('tokenID', axis=1)
df_relation_map[['sentence', 'entity1', 'entity2', 'relation']]
</code></pre>