You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3.4 Pandas:按DataFrame列值重排行——奇数ID优先

解决方法:GroupBy后按ID奇偶重排行

这问题我碰到过,其实处理起来很简单,核心是先搞清楚ID现在的状态——因为你用groupby('ID')的时候默认as_index=True,所以ID已经变成DataFrame的索引了,不是普通列了。接下来分两种高效的实现方式,看你习惯哪种:

方法一:直接基于索引排序(最优,无需修改索引结构)

利用布尔值排序时True(对应数值1)会排在False(对应数值0)前面的特性,直接对索引做奇偶判断后排序:

df1 = df1.sort_values(by=df1.index % 2, ascending=False)

原理很直白:奇数ID对2取余结果是1,偶数是0,ascending=False会让1对应的行排在最前面,完美满足你的需求,而且全程不用改动索引结构,效率最高,适合大数据量场景。

方法二:先把索引转回列再排序(更直观,适合新手)

如果你觉得直接操作索引有点绕,可以先把ID从索引转回普通列,排序后再按需恢复索引:

# 将ID从索引转回普通列
df1 = df1.reset_index()
# 按ID奇偶性排序,奇数行优先
df1 = df1.sort_values(by=lambda row: row['ID'] % 2, ascending=False)
# 可选:如果需要再把ID设回索引,执行下面这行
df1 = df1.set_index('ID')

内容的提问来源于stack exchange,提问作者Vinay Ashokkumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:19:16