有一个Pandas DataFrame,其值接近于1和接近于0:
df = pd.DataFrame({
'colA': (0.97, 0.88, 0.03, 0.02),
'colB': (0.01, 0.03, 0.87, 0.99),
})
按值排序后,结果如下(按colB
排序显然没有影响):
df.sort_values(['colA','colB'], ascending=False)
>> colA colB
>> 0 0.97 0.01
>> 1 0.88 0.03
>> 2 0.03 0.87
>> 3 0.02 0.99
然而,我想基于大于0.5的值进行排序。这将忽略colA
中的较小值,并切换到colB
进行进一步排序。
排序后的DataFrame如下所示(row 2
和3
被交换):
df.some_function(['colA','colB'], ascending=False, condition=i>0.5)
>> colA colB
>> 0 0.97 0.01
>> 1 0.88 0.03
>> 2 0.02 0.99
>> 3 0.03 0.87
非常感谢您的帮助!
where
。我使用了idx = df.where(df > 0.5).sort_values(list(df.columns), ascending=False).index
然后df = df.loc[idx, :]
来将其应用于任意大小的数据框。 - Nico