Мой код говорит: «KeyError: 1», не могли бы вы сказать мне, почему? - PullRequest
0 голосов
/ 07 марта 2020

Добрый день,

У меня проблема с моим кодом. У меня есть Dataframe, похожий на добавленный Grid_frame3. Я хотел бы создать новый dataframe с указанными значениями c. В исходном кадре данных каждая строка имеет координаты x, y и время до последнего столбца. Я хотел бы создать новый фрейм данных, где каждая комбинация координат x, y будет только один раз, и что время до конечного значения будет наименьшим, который можно найти для этих двух координат. Когда я запускаю свой код, он говорит KeyError: 1, не могли бы вы помочь мне выяснить, почему?

В сообщении об ошибке всегда показана строка, где я начал использовать j в качестве итератора.

Я добавляю фрейм данных, который похож на исходный, потому что оригинал довольно большой.

Grid_frame3 = {'flightID':['11111', '11111', '11111', '11111','2222','2222','2222','3333','3333','3333','3333'], 'timestamp':[1519669804, 1519669844,  1519669884, 1519669924,1519669976,1519679614,1519679615,1519679616,1519679800,1519679876,1519679999],'X':[1,1,1,1,2,3,4,4,4,5,6],'Y':[7,7,7,7,7,7,7,8,8,8,9],'time_to_final':[1,2,3,1,1,4,3,5,6,5,3]} 
Grid_frame3 = pd.DataFrame(Grid_frame3) 

column_names = ["X", "Y", "min_time"]
df = pd.DataFrame(columns = column_names)

for i in range(len(Grid_frame3)):
    if len(df) == 0:
        df.loc[i,"X"] = Grid_frame3.loc[i,"X"]
        df.loc[i,"Y"] = Grid_frame3.loc[i,"Y"]
        df.loc[i,"min_time"] = Grid_frame3.loc[i,"time_to_final"]
    else:
        for j in range(len(df)):
            if Grid_frame3.X[i] == df.X[j] and Grid_frame3.Y[i] == df.Y[j]  and Grid_frame3.time_to_final[i] > df.min_time[j]:
                df.min_time[j] = Grid_frame3.time_to_final[i]
            elif df.loc[j,"X"] == Grid_frame3.loc[i,"X"] and df.loc[j,"Y"] == Grid_frame3.loc[i,"Y"] and df.loc[j,"min_time"] <= Grid_frame3.loc[i,"time_to_final"]:
                pass
            else:
                df.loc["X"] = Grid_frame3.loc[i,"X"]
                df.loc["Y"] = Grid_frame3.loc[i,"Y"]
                df.loc["min_time"] = Grid_frame3.loc[i,"time_to_final"]
...