Как решить ошибки строковые индексы должны быть целыми числами - PullRequest
0 голосов
/ 17 апреля 2019

TypeError: строковые индексы должны быть целыми числами.Например: 20 применимо, но не 3550.

i=0
for key in dict1:
       for keys in dict2:
           if (dict1[key]['TITLE']==dict2[keys]['TITLE']):
               if pd.isna(d1.loc[i,'DB']) is True: 
                   d1.iloc[i]=dict2[keys]
    i+=1

DICT1 и 2 выглядят так:

{'DB': 'A',
 'TITLE': 'Wildlife Biology',
 'ISSN': '0909-6396',
 'e-ISSN': nan,
 'ISBN': nan,
 'e-ISBN': nan}

для dict1 [ключ], когда ключ = 20

Ошибка выскакивает при запуске.

if (dict1[key]['TITLE']==dict2[keys]['TITLE']):

TypeError: string indices must be integers

1 Ответ

0 голосов
/ 17 апреля 2019

«TypeError: строковые индексы должны быть целыми числами» означает, что один из dictN или dictN[i] является строкой.Я бы начал отладку, исследуя типы для каждого из них.

Ваши примеры данных не имеют смысла для меня, потому что если бы dictN действительно был Python dict, тогда dictN[i], где i было бы целым числомприведет к KeyError.Если вы разместите больше информации, это может помочь сообществу сделать лучший ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...