如何将DataFrame中RANK≥4的行移至头部且保留其余行原排序
实现指定行移至DataFrame头部且保留原有排序
你可以通过拆分+拼接或者临时优先级排序两种方式实现需求,两种方法都能保留原DataFrame中各自部分的排序规则:
方法一:拆分拼接法(直观高效)
直接拆分出需要移到头部的行和剩余行,再按顺序拼接——因为原DataFrame已按RANK排序,拆分后的两部分内部顺序会自动保留:
import pandas as pd # 提取RANK>=4的行(保留原顺序) top_rows = df1[df1['RANK'] >= 4] # 提取剩余行(保留原顺序) bottom_rows = df1[df1['RANK'] < 4] # 拼接得到结果 result_df = pd.concat([top_rows, bottom_rows], ignore_index=False)
方法二:临时优先级排序法
通过添加临时优先级列,让目标行的优先级更高,排序后再删除临时列:
# 添加临时优先级列:RANK>=4的优先级设为0(排前面),其余为1 df1['temp_priority'] = df1['RANK'].map(lambda x: 0 if x >= 4 else 1) # 按优先级升序排序,同时保留原RANK的排序规则 result_df = df1.sort_values(by=['temp_priority', 'RANK']).drop('temp_priority', axis=1)
两种方法最终都能得到你想要的结果:拆分拼接法更适合简单场景,优先级排序法可扩展到更复杂的多规则优先级需求。
内容的提问来源于stack exchange,提问作者ImFabien75
相关产品推荐
相关产品推荐

