简体   繁体   English

用于匹配两对值的嵌套循环中的关键错误

[英]Key error in nested loop used for matching two pair of values

I am facing an error when I try to match every distinct pair of values in a dataframe column.当我尝试匹配 dataframe 列中的每一对不同的值时,我遇到了一个错误。 every value was written in this way:每个值都是这样写的:

['http://dbpedia.org/resource/Category:American_books,http://dbpedia.org/resource/Category:American_literature_by_medium,http://dbpedia.org/resource/Category:Autobiographies,http://dbpedia.org/resource/Category:Bertelsmann_subsidiaries'] 
i = 0
j = 0

for i in range(len(book_dc.dc_term)):
    values_i = set(book_dc['dc_term'][i].split(','))
    for j in range(i+1, len(book_dc.dc_term)):
        values_j = set(book_dc['dc_term'][j].split(','))
        num_matching = len(values_i.intersection(values_j))
        print("i:", i, "j:", j, "num_matching:", num_matching)
        print('\n')

I should have the matching number of values between every 2 values(cells).我应该在每 2 个值(单元格)之间具有匹配的值数。 i am getting this error:我收到此错误:

KeyError                                  Traceback (most recent call last) /usr/local/lib/python3.8/dist-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance) 3360             try: 3361                 return self._engine.get_loc(casted_key) 3362             except KeyError as err:

5 frames pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()

KeyError: 1

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last) /usr/local/lib/python3.8/dist-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance) 3361                 return self._engine.get_loc(casted_key) 3362             except KeyError as err: 3363                 raise KeyError(key) from err 3364  3365         if is_scalar(key) and isna(key) and not self.hasnans:

KeyError: 1

Solved.解决了。

  for i, item_i in enumerate(book_dc.dc_term):    
           values_i = set(item_i.split(','))    
           for j, item_j in enumerate(book_dc.dc_term[i+1:]):       
                values_j = set(item_j.split(','))        
                num_matching = len(values_i.intersection(values_j))      
                print("i:", i, "j:", j+i+1, "num_matching:", num_matching)         
                print('\n')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM