【问题标题】:How to solve the error string indices must be integers如何解决错误字符串索引必须是整数
【发布时间】:2019-04-17 12:49:43
【问题描述】:

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}

当key=20时为dict1[key]

运行时弹出错误。

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

TypeError: string indices must be integers

【问题讨论】:

  • i 来自哪里?
  • i 是count1,也是一个3500+的整数。
  • 什么是len(dictN)
  • dict1 是字典列表吗?还是字典本身?
  • @CharlesLandaulen(dict1) 是 3680,len(dict2) 是 3817

标签: python pandas dataframe dictionary


【解决方案1】:

"TypeError: string indices must be integers" 表示dictNdictN[i] 之一是字符串。我会通过调查每种类型的类型来开始调试。

您的示例数据对我来说没有意义,因为如果 dictN 真的是 Python 字典,那么 dictN[i] 其中i 是一个整数将导致KeyError。如果您发布更多信息,它可以帮助社区做出更好的回答。

【讨论】:

  • 嗨! dict1, dict1[i], dict2, dict2[j] 都是dict类型。
  • dict1里面一共包含了3680个字典,而dict2里面一共包含了3817个字典。它们由 dataframes.to_dict(orient='index') 组成。
  • 上面显示的字典示例就是dict1[20]的样子,它本身也是一个字典。
猜你喜欢
  • 1970-01-01
  • 2017-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-30
  • 2012-12-11
  • 2021-11-10
  • 2021-10-30
相关资源
最近更新 更多