我对以下问题中非常“类似 Pandas ”的解决方案感兴趣。我有一个简单的实现,可以循环行并检查两列中的条件。我正在研究 NLP 问题,需要在句子中定位标记。我有两个数据帧,一个是 token (药物)的 start_0
和 end_0
位置,第二个数据帧包含 start_1
和 end_1句子的
。例如:
代币位置:
df_0 =
start_0 end_0 token
0 20 27 aspirin
1 50 59 trazodone
2 81 88 placebo
3 121 127 haldol
句子的位置:
df_1=
start_1 end_1
0 0 17
1 17 29
2 29 46
3 46 64
4 64 76
5 76 81
6 81 97
7 97 227
我需要在df_1
中创建一个新列,并将 token 放入相应的行中,即:
df_1=
start_1 end_1 token
0 0 17 NaN
1 17 29 aspirin
2 29 46 NaN
3 46 64 trazodone
4 64 76 NaN
5 76 81 NaN
6 81 97 placebo
7 97 227 haldol
如果标记的位置在句子内,则简单地匹配两个数据框。必须有一个具有 Pandas 功能的简单解决方案,而不是循环行并检查两个边界。
最佳答案
看来您真正想要做的是将df_0
中的单词映射到df_1
中定义的句子边界。您可以使用pd.cut
为此,请注意将所有边界包含在 df_1
中:
boundaries = np.hstack((df_1['start_1'], df_1['end_1'].iloc[-1]))
boundary_labels = df_1.index
df_0['sentence'] = pd.cut(df_0['start_0'], boundaries, labels=boundary_labels, right=False)
print(df_0)
start_0 end_0 token sentence
0 20 27 aspirin 1
1 50 59 trazodone 3
2 81 88 placebo 6
3 121 127 haldol 7
您可以轻松地将 df_0['sentence']
系列映射回 df_1
,因为这些值与 df_1['token']
完美对齐> 在您想要的输出中。
关于python - 在 pandas 中查找满足特定条件的列的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52240213/