在分组依据的键内排序

用户名

我有一个按组分组的表,如下所示,我想对index进行排序['CPUCore', Offline_RetetionAge'](需要保持的结构['CPUCore', Offline_RetetionAge']),我该怎么办?

在此处输入图片说明

耶斯列尔

我认为dtype您的第二个问题object,显然什么string,所以如果使用sort_index它对字母数字进行排序:

df = pd.DataFrame({'CPUCore':[2,2,2,3,3],
                    'Offline_RetetionAge':['100','1','12','120','15'],
                   'index':[11,16,5,4,3]}).set_index(['CPUCore','Offline_RetetionAge'])

print (df)
                             index
CPUCore Offline_RetetionAge       
2       100                     11
        1                       16
        12                       5
3       120                      4
        15                       3
print (df.index.get_level_values('Offline_RetetionAge').dtype)
object


print (df.sort_index())
                             index
CPUCore Offline_RetetionAge       
2       1                       16
        100                     11
        12                       5
3       120                      4
        15                       3

#change multiindex - cast level Offline_RetetionAge to int
new_index = list(zip(df.index.get_level_values('CPUCore'),
                     df.index.get_level_values('Offline_RetetionAge').astype(int)))
df.index = pd.MultiIndex.from_tuples(new_index, names = df.index.names)


print (df.sort_index())
                             index
CPUCore Offline_RetetionAge       
2       1                       16
        12                       5
        100                     11
3       15                       3
        120                      4

通过评论编辑:

print (df.reset_index()
         .sort_values(['CPUCore','index'])
         .set_index(['CPUCore','Offline_RetetionAge']))
                             index
CPUCore Offline_RetetionAge       
2       12                       5
        100                     11
        1                       16
3       15                       3
        120                      4

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章