【问题标题】:join words by following index通过以下索引连接单词
【发布时间】:2021-02-15 11:13:08
【问题描述】:

我的命名实体识别有一个按单词拆分的数据集。我想将一些单词组合在一起,而不是在不应该的时候将它们分开。

数据集示例:

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

【问题讨论】:

  • 您在哪个部分遇到了问题?迭代?确定索引分离是否为一?当您发现索引由一个分隔时将两个单词放在一起?

标签: python pandas


【解决方案1】:

您可以移动 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

【讨论】:

  • 太棒了,这正是我想要的。非常感谢! :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多