如何修复数据框的“索引超出范围”错误?

时间:2019-09-12 06:32:03

标签: python pandas dataframe

我正在尝试使用其他信息创建新的data.frame。

我已经尝试过将索引系列转换为数组,但是似乎没有用,也许是因为我缺乏知识。

import pandas as pd

def forma_base():
    dict_indices={"Escola":[],"Codigo da escola":[],"Formação ideal":[],
        "Alunos por turma":[],"Professores com formação superior":[],
        "Distorção idade-serie":[],"INSE":[],"Abandono":[],"Reprovação":[],
        "Matriculas no 3 ano":[],"Participação no Enem":[],
        "Media no Enem":[]}
    df_base=pd.DataFrame(dict_indices)

    return df_base


def preenche_escola():
    df_base=forma_base()
    bancos=importa_bancos()
    banco=bancos[0]

    for i in range(len(banco)):
        if banco["Dependência Administrativa"][i]=="Privada":
            continue
        else:
            df_base["Escola"][i].append(banco["Nome da Escola"][i])
            df_base["Codigo da escola"][i].append(banco["Código da Escola"][i])

    return df_base
  

输出为“ IndexError:索引超出范围”。

1 个答案:

答案 0 :(得分:1)

您似乎已经在第二个函数中设置了该循环,以检查是否存在另一个DataFrame banco中的一行。另一种方法是先转储数据,然后有选择地删除行。

def preenche_escola():
    df_base=forma_base()
    bancos=importa_bancos()
    banco=bancos[0] # I'm going to assume this extracts your desired DataFrame

    df_base["Escola"] = banco["Nome da Escola"]
    df_base["Codigo da escola"] = banco["Código da Escola"]
    df_base["Dependência Administrativa"] = banco["Dependência_Administrativa"]

    df_base = df_base[~df_base.Dependência_Administrativa.str.contains("Privada")]

    return df_base

如果您不需要[“DependênciaAdministrativa”]列,只需在df_base.drop(columns=["Dependência Administrativa"], inplace=True)之后。