连接数据框后对特定列进行排序

我将 3 个数据帧连接成一个数据帧。现在我想对一些特定的列进行排序,所以我使用了这段代码:


final_df.sort_values(['Tab1_1', 'Tab2_2'], ascending=False)

但是,输出按col1顺序显示值,但中的值col5不是。有人能告诉我我错过了什么吗?


下面是一个数据示例:


concat_table = {'ID': ['Sun_1'], 

                'Tab1': ['Al', 'Alu', 'Alt'],

                'Tab1_1': [6, 3, 4], 

                '%_Tab_1': [90, 50, 40], 

                'Tab2': ['Type1', 'Type2', 'Type3'], 

                'Tab2_2': [4, 5, 2],

                '%_Tab1_2': [60, 90, 40]}

这是应该如何订购的:


concat_table_ordered = {'ID': ['Sun_1'], 

                        'Tab1': ['Al', 'Alt', 'Alu'],

                        'Tab1_1': [6, 4, 3], 

                        '%_Tab_1': [90, 40, 50], 

                        'Tab2': ['Type2', 'Type1', 'Type3'], 

                        'Tab2_2': [5, 4, 2],

                        '%_Tab1_2': [90, 60, 40]}


HUH函数
浏览 109回答 2
2回答

翻翻过去那场雪

如果在 pandas 中按多列排序sequentially,则表示首先按列表中的第一列,她Tab1_1的,然后按下一个值,但前提是前列中的值重复,这里Tab1_1:concat_table={'ID':'Sun_1',&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'Tab1': ['Al','Alu','Alt', 'aaa'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'Tab1_1':[6,3,4,4],&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '%_Tab_1':[90,50,40,100],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'Tab2':['Type1','Type2','Type3','Type4'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'Tab2_2':[4,5,2,1],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '%_Tab1_2':[60,90,40,20]}df = pd.DataFrame (concat_table)print (df)&nbsp; &nbsp; &nbsp; ID Tab1&nbsp; Tab1_1&nbsp; %_Tab_1&nbsp; &nbsp;Tab2&nbsp; Tab2_2&nbsp; %_Tab1_20&nbsp; Sun_1&nbsp; &nbsp;Al&nbsp; &nbsp; &nbsp; &nbsp;6&nbsp; &nbsp; &nbsp; &nbsp;90&nbsp; Type1&nbsp; &nbsp; &nbsp; &nbsp;4&nbsp; &nbsp; &nbsp; &nbsp; 601&nbsp; Sun_1&nbsp; Alu&nbsp; &nbsp; &nbsp; &nbsp;3&nbsp; &nbsp; &nbsp; &nbsp;50&nbsp; Type2&nbsp; &nbsp; &nbsp; &nbsp;5&nbsp; &nbsp; &nbsp; &nbsp; 90 <-4 are duplicated2&nbsp; Sun_1&nbsp; Alt&nbsp; &nbsp; &nbsp; &nbsp;4&nbsp; &nbsp; &nbsp; &nbsp;40&nbsp; Type3&nbsp; &nbsp; &nbsp; &nbsp;2&nbsp; &nbsp; &nbsp; &nbsp; 40 <-4 are duplicated3&nbsp; Sun_1&nbsp; aaa&nbsp; &nbsp; &nbsp; &nbsp;4&nbsp; &nbsp; &nbsp; 100&nbsp; Type4&nbsp; &nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; 20df1 = df.sort_values(['Tab1_1','Tab2_2'], ascending=False)print (df1)&nbsp; &nbsp; &nbsp; ID Tab1&nbsp; Tab1_1&nbsp; %_Tab_1&nbsp; &nbsp;Tab2&nbsp; Tab2_2&nbsp; %_Tab1_20&nbsp; Sun_1&nbsp; &nbsp;Al&nbsp; &nbsp; &nbsp; &nbsp;6&nbsp; &nbsp; &nbsp; &nbsp;90&nbsp; Type1&nbsp; &nbsp; &nbsp; &nbsp;4&nbsp; &nbsp; &nbsp; &nbsp; 602&nbsp; Sun_1&nbsp; Alt&nbsp; &nbsp; &nbsp; &nbsp;4&nbsp; &nbsp; &nbsp; &nbsp;40&nbsp; Type3&nbsp; &nbsp; &nbsp; &nbsp;2&nbsp; &nbsp; &nbsp; &nbsp; 40 <-sorted 2,1&nbsp;3&nbsp; Sun_1&nbsp; aaa&nbsp; &nbsp; &nbsp; &nbsp;4&nbsp; &nbsp; &nbsp; 100&nbsp; Type4&nbsp; &nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; 20 <-sorted 2,1&nbsp;1&nbsp; Sun_1&nbsp; Alu&nbsp; &nbsp; &nbsp; &nbsp;3&nbsp; &nbsp; &nbsp; &nbsp;50&nbsp; Type2&nbsp; &nbsp; &nbsp; &nbsp;5&nbsp; &nbsp; &nbsp; &nbsp; 90如果需要单独排序,则必须先拆分列,排序然后分配回,但必须通过以下方式默认索引值reset_index(drop=True):df1 = df.iloc[:, :4].sort_values(['Tab1_1'], ascending=False)df2 = df.iloc[:, 4:].sort_values(['Tab2_2'], ascending=False)final_df = pd.concat([df1.reset_index(drop=True),&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; df2.reset_index(drop=True)], axis=1)print (final_df)&nbsp; &nbsp; &nbsp; ID Tab1&nbsp; Tab1_1&nbsp; %_Tab_1&nbsp; &nbsp;Tab2&nbsp; Tab2_2&nbsp; %_Tab1_20&nbsp; Sun_1&nbsp; &nbsp;Al&nbsp; &nbsp; &nbsp; &nbsp;6&nbsp; &nbsp; &nbsp; &nbsp;90&nbsp; Type2&nbsp; &nbsp; &nbsp; &nbsp;5&nbsp; &nbsp; &nbsp; &nbsp; 901&nbsp; Sun_1&nbsp; Alt&nbsp; &nbsp; &nbsp; &nbsp;4&nbsp; &nbsp; &nbsp; &nbsp;40&nbsp; Type1&nbsp; &nbsp; &nbsp; &nbsp;4&nbsp; &nbsp; &nbsp; &nbsp; 602&nbsp; Sun_1&nbsp; Alu&nbsp; &nbsp; &nbsp; &nbsp;3&nbsp; &nbsp; &nbsp; &nbsp;50&nbsp; Type3&nbsp; &nbsp; &nbsp; &nbsp;2&nbsp; &nbsp; &nbsp; &nbsp; 40

慕仙森

您是否将此输出分配给另一个df?否则使用inplace=True:final_df.sort_values(['col1','col5'],&nbsp;ascending=False,&nbsp;inplace=True)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python