python - 通过以下索引连接单词
问题描述
我的命名实体识别有一个按单词拆分的数据集。我想将一些单词组合在一起,而不是在不应该的时候将它们分开。
数据集示例:
print(df[:5])
ID Word Start_Idx End_Idx
1 I 1 2
2 live 4 8
3 in 10 12
4 New 14 17
5 York 18 22
如您所见,纽约被一分为二,但索引仅由 1 分隔,而其他单词索引则由 2(或更多)分隔。
如何编写代码,遍历 End_Idx 和 Start_Idx 并查找以 1 分隔的单词,然后将它们放在一起,因此我可以打印如下数据帧:
print(df[:5])
ID Word Start_Idx End_Idx
1 I 1 2
2 live 4 8
3 in 10 12
4 New York 14 22
解决方案
您可以移动 End_Idx 列,将其与 Start_Idx 进行比较,然后使用 groupby,如下所示。
df = df.groupby(((df["Start_Idx"] - df["End_Idx"].shift(1)) > 1).cumsum()).agg({'ID': min, 'Word': ' '.join, 'Start_Idx': min, 'End_Idx': max})
输出:
ID Word Start_Idx End_Idx
0 1 I 1 2
1 2 live 4 8
2 3 in 10 12
3 4 New York 14 22
推荐阅读
- python - 在 Pandas 中读取 JSON 文件错误以进行文本提取
- identityserver4 - 如何将自定义表添加到 configurationDbContext?
- javascript - 如何按属性值计算对象的出现次数,并将计数与对象一起存储在新数组中
- c - 何时调用 `longjmp()` 时需要 `volatile`?
- arrays - 使用逻辑数组从matlab中的单元格数组中获取字符串组合的位置
- tensorflow - 在 keras 中制作内存高效的 GAN:`clear_session` 导致张量流图冲突
- javascript - 在 vue.js 中按类型对评论进行排序
- airflow - 如何制作一个需要处理今天的数据的 DAG?
- python - 长时间闲置后,pygame混音器音乐ogg播放失真
- c# - 从 Angular 传递到 C# 端点的参数不是预期类型