首页 > 解决方案 > 按升序对熊猫列进行排序,然后对非 0 重复项进行排序

问题描述

我有一个我正在尝试排序的 pandas 数据框

在这里它将是未排序的

col1   col2    col3   col4
  2       0       0    0    
  7    1207    3262    3 
  8    1212    3266    1    
  5    1246    3263    4 
  4       0       0    1 
  6    1232    3265    0       

这将是理想的类型:

这将是预期的结果

col1   col2    col3   col4
  6    1232    3265    0    
  2       0      0     0    
  8    1212    3266    1    
  4       0      0     1    
  7    1207    3262    3    
  5    1246    3263    4    

我想要做的是按 col4 排序,但如果有重复,则使用 col2 中具有有效值(非 0)的行。问题是 col2 可能不是升序或降序,只包含一个有效值。

我能想到的唯一方法是创建新的数据框,但希望有更好的方法。

@ganderson 的方法最终对我有用

df.sort_values(['col4', 'col2'], ascending=[True,True], inplace=True)

标签: pythonpandas

解决方案


在提供的示例中,这看起来像

df.sort_values(['col4', 'col2'], ascending=[True,False]))

您希望如何应用第二级排序存在一些歧义,但这应该至少产生发布的输出


推荐阅读