为了账号安全,请及时绑定邮箱和手机立即绑定

按两个标准对列进行排序

按两个标准对列进行排序

慕容森 2022-12-27 17:13:42
我得到了一个结果列表,我想按两个标准对其进行排序。我对 sys 列进行了第一次排序:systems = {'BzBz_S':0,'BzBz_PD34':1,'MeMe':2}sorted_results = sorted(results, key = lambda e: (systems[e[0]]))并传递给 DataFramedf = pd.DataFrame(sorted_results,columns = ['sys','dis','basis','Energy'])这给了我以下输出:,sys,dis,system,basis,Energy0,BzBz_S,10.0,BzBz_S_10.0,S,0.025624651,BzBz_S,3.2,BzBz_S_3.2,S,1.485102972,BzBz_S,3.3,BzBz_S_3.3,S,-0.250864983,BzBz_S,6.0,BzBz_S_6.0,S,-0.118279754,BzBz_S,3.9,BzBz_S_3.9,S,-2.447052445,BzBz_PD34,0.4,BzBz_PD34_0.4,PD34,-1.881723126,BzBz_PD34,0.2,BzBz_PD34_0.2,PD34,-1.505190347,MeMe,5.0,MeMe_5.0,5,-0.121942838,MeMe,5.4,MeMe_5.4,5,-0.07556324除了 sys 之外,我如何创建第二个排序标准来对 dis 列进行排序,以获得这样的最终结果:,sys,dis,system,basis,Energy0,BzBz_S,3.2,BzBz_S_3.2,S,1.485102971,BzBz_S,3.3,BzBz_S_3.3,S,-0.250864982,BzBz_S,3.9,BzBz_S_3.9,S,-2.44705244 3,BzBz_S,6.0,BzBz_S_6.0,S,-0.118279754,BzBz_S,10.0,BzBz_S_10.0,S,0.025624655,BzBz_PD34,0.2,BzBz_PD34_0.2,PD34,-1.505190346,BzBz_PD34,0.4,BzBz_PD34_0.4,PD34,-1.881723127,MeMe,5.0,MeMe_5.0,5,-0.121942838,MeMe,5.4,MeMe_5.4,5,-0.07556324
查看完整描述

1 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

获得第一个输出后,您可以执行以下操作以获得最终输出,希望对您有所帮助!


df['sys_cat']=df['sys'].astype('category')  #creating a categorical column in the dataframe


d = dict(zip(df.sys_cat,df.sys_cat.cat.codes)) # converting categorical column into codes


# reassigning categories

count=0

for i in d:

    d[i]=count

    count+=1


df['sys_cat']=df['sys_cat'].map(d).astype(int)

df.sort_values(by=['sys_cat', 'dis'],ascending=[True, True], inplace=True)

df.drop(['sys_cat'], inplace=True, axis=1)

df.reset_index(inplace=True, drop=True)

df

给出:


          sys   dis            system   basis      Energy

0      BzBz_S   3.2        BzBz_S_3.2   S        1.485103

1      BzBz_S   3.3        BzBz_S_3.3   S       -0.250865

2      BzBz_S   3.9        BzBz_S_3.9   S       -2.447052

3      BzBz_S   6.0        BzBz_S_6.0   S       -0.118280

4      BzBz_S   10.0      BzBz_S_10.0   S        0.025625

5   BzBz_PD34   0.2     BzBz_PD34_0.2   PD34    -1.505190

6   BzBz_PD34   0.4     BzBz_PD34_0.4   PD34    -1.881723

7        MeMe   5.0          MeMe_5.0   5       -0.121943

8        MeMe   5.4          MeMe_5.4   5       -0.075563


查看完整回答
反对 回复 2022-12-27
  • 1 回答
  • 0 关注
  • 64 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信