熊猫错误:字符串索引必须为整数

时间:2019-08-21 14:57:19

标签: python pandas

我不确定下面的代码在哪里出了问题,我在其中使用了两个for循环来首先迭代statename,然后迭代每个包含该特定statename的字典。

我终于通过我的第二个代码(在片段上正确的代码)解决了这个问题,但是我很想知道为什么第一个不起作用。

使用的文件是人口普查文件,其中以州名,县名(州的一个分区)和人口为列。

无法与以下错误(左侧为“字符串索引必须为整数”)一起使用:

enter image description here

2 个答案:

答案 0 :(得分:0)

不知道为什么图片不出来...抱歉第一次来这里!
我尝试过的第一个有疑问的代码是:(关于字符串索引必须是整数):

state_unique=census_df['STNAME'].unique()
list=[]
def answer_five():
    for c in state_unique:
        count=0
        for d in census_df:
            if d['STNAME']==c:
               count+=1
        return list.append(count)
answer_five()

第二个有助于解决我的问题的代码是:

max_county=[]
state_unique=census_df['STNAME'].unique()
def answer_five():
    for c in state_unique:
        df1=census_df[census_df['STNAME']==c]
        max_county.append(len(df1))
    return max(max_county)
answer_five()

答案 1 :(得分:0)

正如其他人已经建议的那样,请仔细阅读提供Minimal, Reproducible Example的内容。不过,我可以看到这里出了什么问题。当您遍历US/Eastern时,实际上会遍历数据框的列名,即for d in census_dfSUMLEV等。大概不是您想的那样。

然后,如消息所示,下一行REGION会导致错误,因为字符串索引必须是整数。在这种情况下,您尝试使用另一个字符串if d['STNAME']==c为一个字符串编制索引。

如果您确实希望第一种方法有效,请尝试使用STNAME

iterrows