2022年12月13日 星期二

how to sort a pandas dataframe by two keys?

# 對於pandas資料框df如果須要依據主鍵文字欄位sentiment,

# 次鍵文字欄位text的長度進行紀錄排序,可參考如下寫法。 

def sort_by_two_columns(x): # x 表示某列資料的排序欄位值

    if x.name == 'sentiment': # 若詢問排序欄位為sentiment,回傳欄位值供排序
        return x
    elif x.name == 'text': # 若詢問排序欄位為text,回傳欄位長度值供排序
        return x.str.len()

# 先依據主鍵文字欄位sentiment由小到大,
# 再依據次鍵文字欄位text的長度由小到大,
# 排序結果重新回傳一個新資料框

sort_df = df.sort_values(by=['sentiment''text'], 
key=sort_by_two_columns, ascending=[TrueTrue], inplace=False)

pd.set_option('min_rows'100) # 資料框至少顯示100列

sorted_df = sort_df.drop_duplicates() # 去除重複記錄

沒有留言: