【问题标题】:How to fix "index out of bounds" error with dataframes?如何使用数据框修复“索引超出范围”错误?
【发布时间】:2023-04-09 09:45:01
【问题描述】:

我正在尝试使用其他人的信息创建一个新的 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: index out of bounds”。

【问题讨论】:

  • 我认为你正在做的迭代是不需要的。您能否提供您拥有的数据以及您想要实现的目标?

标签: python pandas dataframe


【解决方案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ência Administrativa"] 列,只需 df_base.drop(columns=["Dependência Administrativa"], inplace=True) 之后。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    相关资源
    最近更新 更多