同时按照两个列进行排序

5

我有这个:

A    B    C
1    4    string1 
2    11   string2  
1    13   string3
2    43   string4

我希望同时按照A和B进行排序,得到如下结果:

A    B    C
1    4    string1 
1    13   string3
2    11   string2  
2    43   string4

使用以下内容没有进行排序

data =  data.sort_values(by=['A','B'], ascending=[True,True])

你不能将索引设置为数据框。 - A.Kot
你在哪里执行自然排序? - SethMMorton
@SethMMorton,我发现该列是字符串而不是数字,这就是为什么df无法正确排序的原因。我已经调整了标题和文本,以更好地反映答案供其他用户参考。Ed - Thirst for Knowledge
我明白了。你可能也想删除自然排序标签。 - SethMMorton
1个回答

11

我认为你需要将输出分配给新的DataFrame,参数ascending可以省略,因为在DataFrame.sort_values中默认值为ascending=True

data = data.sort_values(by=['A','B'])
print (data)
   A   B        C
0  1   4  string1
2  1  13  string3
1  2  11  string2
3  2  43  string4

此外,inplace=True 可以代替将值重新赋给 data - SethMMorton
@SethMMorton 感谢您的评论,您是正确的,这是另一种可能的解决方案。 data.sort_values(by=['A','B'], inplace=True) print (data) - jezrael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接