为了账号安全,请及时绑定邮箱和手机立即绑定

忽略某些值对 pandas DataFrame 进行排序

忽略某些值对 pandas DataFrame 进行排序

富国沪深 2022-12-06 16:33:45
有一个值接近 1 和接近 0 的 pandas DataFrame: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非常感谢你的帮助!
查看完整描述

3 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

想法是将不匹配的值替换为缺失值然后排序,最后按新索引更改顺序:


idx = (df[['colA','colB']].where(df[['colA','colB']] > 0.5)

           .sort_values(['colA','colB'], ascending=False).index)


df1 = df.loc[idx]

print (df1)

   colA  colB

0  0.97  0.01

1  0.88  0.03

3  0.02  0.99

2  0.03  0.87

细节:


print (df[['colA','colB']].where(df[['colA','colB']] > 0.5))

   colA  colB

0  0.97   NaN

1  0.88   NaN

2   NaN  0.87

3   NaN  0.99



print (df[['colA','colB']].where(df[['colA','colB']] > 0.5)

                          .sort_values(['colA','colB'], ascending=False))

   colA  colB

0  0.97   NaN

1  0.88   NaN

3   NaN  0.99

2   NaN  0.87


查看完整回答
反对 回复 2022-12-06
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

构建一个与“a”相同但忽略较小值的新列,并使用此新值和“b”进行排序:


df.assign(simplified_a = np.where(df.colA<0.5, 0, df.colA))\

  .sort_values(["simplified_a", "colB"], ascending=False).drop("simplified_a", axis=1)

结果:


   colA  colB

0  0.97  0.01

1  0.88  0.03

3  0.02  0.99

2  0.03  0.87


查看完整回答
反对 回复 2022-12-06
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

根据条件过滤数据场,然后排序,然后追加


df1 = df.where(df['colA'] > 0.5).sort_values('colA')

df2 = df.where(df['colA'] <= 0.5).sort_values('colB')


final_frame = df1.append(df2).dropna()


   colA  colB

0  0.87  0.01

1  0.88  0.03

2  0.03  0.87

3  0.02  0.99


查看完整回答
反对 回复 2022-12-06
  • 3 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号