在单词的句子中找到句子
find sentence among sentence of words
我有两个 Pandas 数据框。一个所有的句子都按单词垂直分割,看起来像这样
Sentence | Text
1 I
1 like
1 Cats
2 The
2 man
2 plays
2 soccer
2 today
另一个数据框是这样的:
ID | Text | Tags
1 plays soccer sport
2 man human
3 like cats interest
我想做的是将Tags映射到句子中两个地方都匹配的词的第一个数据框,不匹配的得到一个“O”来表示。
Sentence | Text | Tags
1 I O
1 like interest
1 Cats interest
2 The O
2 man human
2 plays sport
2 soccer sport
2 today O
假设 df1
是您的第一个 table 并且 df2
是您的第二个(其中 ID
是索引)那么您可以:
- 引爆你的第二个 table (
str.split()
+ explode()
)
merge()
左连接
fillna()
NaN
和 O
例如:
In []:
df1.merge(df2.assign(Text=df2.Text.str.split()).explode('Text'), 'left').fillna('O')
Out[]:
Sentence Text Tags
0 1 I O
1 1 like interest
2 1 Cats O
3 2 The O
4 2 man human
5 2 plays sport
6 2 soccer sport
7 2 today O
目前这是区分大小写的,但是在 Text
的 str.lower()
列上合并是一个简单的练习。
我有两个 Pandas 数据框。一个所有的句子都按单词垂直分割,看起来像这样
Sentence | Text
1 I
1 like
1 Cats
2 The
2 man
2 plays
2 soccer
2 today
另一个数据框是这样的:
ID | Text | Tags
1 plays soccer sport
2 man human
3 like cats interest
我想做的是将Tags映射到句子中两个地方都匹配的词的第一个数据框,不匹配的得到一个“O”来表示。
Sentence | Text | Tags
1 I O
1 like interest
1 Cats interest
2 The O
2 man human
2 plays sport
2 soccer sport
2 today O
假设 df1
是您的第一个 table 并且 df2
是您的第二个(其中 ID
是索引)那么您可以:
- 引爆你的第二个 table (
str.split()
+explode()
) merge()
左连接fillna()
NaN
和O
例如:
In []:
df1.merge(df2.assign(Text=df2.Text.str.split()).explode('Text'), 'left').fillna('O')
Out[]:
Sentence Text Tags
0 1 I O
1 1 like interest
2 1 Cats O
3 2 The O
4 2 man human
5 2 plays sport
6 2 soccer sport
7 2 today O
目前这是区分大小写的,但是在 Text
的 str.lower()
列上合并是一个简单的练习。