长话短说:我有一个像这样的模板的DataFrame:
city Longitude Latitude
0 Gotham City 35.699708 2.158089
1 Xibalba 35.676700 4.199400
2 Eldorado 35.680871 6.165926
3 Atlantis 35.680339 8.165897
4 Elysium 35.678219 10.165940
5 Lost City of Z 35.678037 12.166077
6 Parnasius 35.678192 14.165853
然后我使用一种算法来解决旅行商问题。我的解决方案是一个列表,像这样:
sorting_order = [4,5,2,1,0,6,3]
为清楚起见,df.iloc [4]应该在第一位置,然后是df.iloc [5],df.iloc [2],等等...所以我创建了一个新的空DF:
df_sorted = pd.DataFrame(columns =['city','Longitude','Latitude'])
最后,我尝试了这个简单的for循环来更新右侧odd中的df_sorted:
for index in sorting_order:
df_sorted.append(df.iloc[index])
但是df_sorted在循环结束时仍然为空...是否可以使用另一个的iloc更新新的DF?
答案 0 :(得分:2)
您已经提到iloc
,为什么不尝试:
df.iloc[sorting_order]
输出:
city Longitude Latitude
4 Elysium 35.678219 10.165940
5 Lost City of Z 35.678037 12.166077
2 Eldorado 35.680871 6.165926
1 Xibalba 35.676700 4.199400
0 Gotham City 35.699708 2.158089
6 Parnasius 35.678192 14.165853
3 Atlantis 35.680339 8.165897
答案 1 :(得分:1)
只需重新索引数据框,然后重置索引即可。
>>> df.reindex(sorting_order).reset_index(drop=True)
city Longitude Latitude
0 Elysium 35.678219 10.165940
1 Lost_City_of_Z 35.678037 12.166077
2 Eldorado 35.680871 6.165926
3 Xibalba 35.676700 4.199400
4 Gotham_City 35.699708 2.158089
5 Parnasius 35.678192 14.165853
6 Atlantis 35.680339 8.165897