假设我有一个名为Single_Words的数据帧列表:
Words
The
Man
Was
Funny
and
Handsome
然后是另一个单独的数据帧列表,名为Bigrams:
Words
The Comedian
The Man
Handsome Dan
Funny Guy
Man Down
The Jokester
Comedians Are
我想要做的是遍历Single_Words数据帧中的每个单词,然后将其连接到第二个列表中的bigram,其中只有bigram的第一个单词是相同的。
所以这是一个使用第一个数据帧中的'The'一词的示例输出,并迭代第二个数据帧将产生一个这样的新列表:
Words
The The Comedian
The The Man
The The Jokester
使用'Man'从第一个数据框开始并迭代第二个数据框将给出:
Words
Man Down
一旦我有了这个新列表并且已经遍历了初始列表,我计划通过再次访问原始的双字母表(最多5次)来冲洗并重复此过程。因此,回到'''示例,第二次迭代会像这样添加到列表
Words
The The Comedian
The The Man
The The Jokester
The The Man Man Down
The The Comedians Comedians Are
有人有什么建议吗?
答案 0 :(得分:1)
这很有效,我会尝试找到更好的方法。
基本上我使用re
来搜索完整的单词(例如,这与帅不匹配)并构造一个dict并从该dict创建一个新的df:
In [108]:
import re
temp = {'Words':[]}
def func(x):
for w in list(df1.Words):
if re.search(r'\b'+x+r'\b', w):
# just add the entry if the dict is empty
if len(temp['Words']) == 0:
temp['Words'] = [x + ' ' + w]
else:
t = temp['Words']
t.append(x + ' ' + w)
temp['Words'] = t
df.Words.apply(func)
total = pd.DataFrame(temp)
total
Out[108]:
Words
0 The The Comedian
1 The The Man
2 The The Jokester
3 Man The Man
4 Man Man Down
5 Funny Funny Guy
6 Handsome Handsome Dan