我在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']
。
答案 0 :(得分:0)
您可以使用DataFrame.iterrows
:see 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': [… ...}
这将创建一个字典,其中包含两个行索引的字符串是键,相应的交集是值,存储并组织所有输出以供进一步使用。