在2个数据帧的每一行中查找常用词(交集)

时间:2018-12-23 21:38:26

标签: python pandas dataframe

我在https://docs.google.com/spreadsheets/d/1dHoVyEAi0SrY3QPgxRYXjl7CYkRvv0LVV_re38523ck/edit?usp=sharing有两个数据框

我想比较Dataframe1['Final_Text']Dataframe2['Text']的匹配单词(交集)。 Dataframe2['Final_Text']的第1行应与Dataframe1['Text']的每一行进行比较,类似地,第2行Dataframe2['Final_Text']Dataframe1['Text']的每一行进行比较并显示。

请提出可能的方法。

直到现在,我已经完成了

lexicon = set().union(*df2['Final_Text'].str.split())

输出->

{'study', 'cell' , 'response', 'patient, 'effect','activity' 'cell,', 'protein,', 'result,'}

虚拟数据

data={'activity', 'cell','response','Study','Maths', 'DNA'}

c=data.intersection(lexicon)
print(c)

最终输出---> 'cell'

我要检查data的每一行,而不是Dataframe2['Text']

1 个答案:

答案 0 :(得分:0)

您可以使用DataFrame.iterrowssee docs here遍历数据帧的每一行。这将产生行索引和行本身的内容。 这使您可以执行以下操作:

intersections = dict()
for index2, row2 in Dataframe2.iterrows():
    for index1, row1 in Dataframe1.iterrows():
        words1 = set(str(row1[1]).split())
        words2 = set(str(row2[1]).split())
        matching_words = list(words2.intersection(words1))
        rows = 'DF1:{} DF2:{}'.format(index1, index2)
        intersections[rows] = matching_words

print(intersections)

>> {'DF1:0 DF2:0': [], 'DF1:1 DF2:0': [… ...}

这将创建一个字典,其中包含两个行索引的字符串是键,相应的交集是值,存储并组织所有输出以供进一步使用。