【问题标题】:Sort by two columns at once一次按两列排序
【发布时间】:2017-01-27 19:26:21
【问题描述】:

我有这个:

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])

【问题讨论】:

  • 您不能将索引设置为数据框
  • 你在哪里进行自然排序?
  • @SethMMorton,我实际上发现该列是一个字符串而不是数字,这就是为什么 df 没有正确排序的原因。我调整了标题和文本,以更好地反映其他用户的答案。埃德
  • 我明白了。那么,您可能还想删除自然排序标签。

标签: python pandas multiple-columns


【解决方案1】:

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

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 感谢您的评论,您是对的,这是另一种可能的解决方案。 data.sort_values(by=['A','B'], inplace=True)print (data)
猜你喜欢
  • 2012-05-12
  • 1970-01-01
  • 1970-01-01
  • 2012-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-23
  • 2012-10-19
相关资源
最近更新 更多