簡體   English   中英

根據一列的排序對多個 Pandas Dataframe 列進行排序

[英]Sorting multiple Pandas Dataframe Columns based on the sorting of one column

我有一個 dataframe 有兩列,“項目”和“卡路里”。 我已經使用選擇排序算法對“卡路里”列進行了數字排序,但我需要更改“項目”列,以便卡路里值與正確的項目匹配。

menu=pd.read_csv("menu.csv",encoding="utf-8")   # Read in the csv file
menu_df=pd.DataFrame(menu,columns=['Item','Calories'])    # Creating a dataframe with just the information from the calories column
print(menu_df)                                  # Display un-sorted data
#print(menu_df.at[4,'Calories'])                # Practise calling on individual elements within the dataframe.

# Start of selection sort
for outerloopindex in range (len(menu_df)):   
    smallest_value_index=outerloopindex              
    for innerloopindex in range(outerloopindex+1,len(menu_df)):
        if menu_df.at[smallest_value_index,'Calories']>menu_df.at[innerloopindex,'Calories']:                                     
            smallest_value_index=innerloopindex                                                    
 
            
# Changing the order of the Calorie column.
    menu_df.at[outerloopindex,'Calories'],menu_df.at[smallest_value_index,'Calories']=menu_df.at[smallest_value_index,'Calories'],menu_df.at[outerloopindex,'Calories']     

# End of selection sort

print(menu_df) 

任何有關如何在排序后使“項目”列與相應的“卡路里”值相匹配的幫助將不勝感激。

謝謝馬丁

您可以將df.at[...]替換為df.loc[...]並引用多個列,而不是單個列。

所以替換行:

menu_df.at[outerloopindex,'Calories'],menu_df.at[smallest_value_index,'Calories']=menu_df.at[smallest_value_index,'Calories'],menu_df.at[outerloopindex,'Calories']     

帶線:

menu_df.loc[outerloopindex,['Calories','Item']],menu_df.loc[smallest_value_index,['Calories','Item']]=menu_df.loc[smallest_value_index,['Calories','Item']],menu_df.loc[outerloopindex,['Calories','Item']]     

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM