如何对Pandas DataFrame的'F'列进行排序?
解决Pandas多层索引DataFrame按指定列排序的问题
你的问题核心在于这个DataFrame用了多层列索引(MultiIndex)——从sample.info()的输出能看到,列名其实是元组('rating', 'F')和('rating', 'M'),而不是单独的字符串'F'或'M',这就是之前排序代码失效的原因。
正确的排序方法
你需要用元组来匹配多层索引的列结构,使用sort_values()方法就能实现按'F'列排序:
# 按F列降序排序,返回新的DataFrame sorted_sample = sample.sort_values(by=('rating', 'F'), ascending=False) # 如果要直接修改原DataFrame,加上inplace=True参数 sample.sort_values(by=('rating', 'F'), ascending=False, inplace=True)
为什么之前的代码不行?
你之前尝试的by='F'、by='rating,F'都无法定位到正确的列,因为多层索引的列名是二元元组,必须完全匹配这个元组结构才能选中目标列。
另一种替代方法:通过列位置排序
如果你不想写元组,也可以通过列的位置来指定(F列是第0列):
sample.sort_values(by=sample.columns[0], ascending=False)
内容的提问来源于stack exchange,提问作者R. Stewart
相关产品推荐
相关产品推荐

