Dobrý den,
Pracuji na jednom projektu a docela jsem se teď zasekla. Mám Pandas Dataframe, ve kterém je několik sloupců, sloupce, se kterými potřebuji manipulovat jsou sloupce X,Y a time_to_final. Ráda bych udělala nový dataframe, kde budu mít unikátní dvojice X,Y, které nebudou diplikované jako jsou v původním Dataframe, ale pokaždé bych ráda, aby to jako hodnotu time_to_final, kterou mám v novém dataframe pojmenovanou min_time.
Pro interpretovatelnost jsem přidala dataframe, který je podobný tomu, se kterým pracuji.
Při spuštění kodu a postupném debugování vidím, že řádek elif je true pokaždé, i když X a Y v řádku i původního dataframe se neshodují s hodnotami v novém dataframe df.
Můžete mi prosím poradit, co s tím?
Grid_frame2 = {'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_frame2)):
if len(df) == 0:
df.loc[i,"X"] = Grid_frame2.loc[i,"X"]
df.loc[i,"Y"] = Grid_frame2.loc[i,"Y"]
df.loc[i,"min_time"] = Grid_frame2.loc[i,"time_to_final"]
else:
if df['min_time'].loc[(df['X'] == Grid_frame2.X[i]) & (df['Y'] == Grid_frame2.Y[i])].any() >Grid_frame2.time_to_final[i]:
df['min_time'].at[(df['X'] == Grid_frame2.X[i]) & (df['Y'] == Grid_frame2.Y[i])] = Grid_frame2.time_to_final[i]
elif df['min_time'].loc[(df['X'] == Grid_frame2.X[i]) & (df['Y'] == Grid_frame2.Y[i])].any() <= Grid_frame2.time_to_final[i]:
pass
else:
df = df.append({'X' : Grid_frame2.loc[i,"X"], 'Y' : Grid_frame2.loc[i,"Y"], 'min_time' : Grid_frame2.loc[i,"time_to_final"]},ignore_index=True)