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

如何在Pandas分组(groupby)后对DataFrame的Version列排序

问题

给定如下Pandas DataFrame:

Fruit   Color   Version
Apple   Green   1.1
Lemon   Green   1.4a
Lemon   Yellow  5
Banana  Black   6.8.a
Banana  Yellow  6.8.a
Lemon   Blue    6.7.a

需要按Color列分组,对每组内的Version列进行降序排序,期望输出:

Fruit   Color   Version
Lemon   Green   1.4a
Apple   Green   1.1
Banana  Yellow  6.8.a
Lemon   Yellow  5
Banana  Black   6.8.a
Lemon   Blue    6.7.a

已尝试使用LooseVersion进行版本排序,但无法结合groupby实现组内排序。

解决方案

利用groupby的apply方法,在每组内基于LooseVersion对Version列排序,具体实现如下:

  1. 导入依赖库:
import pandas as pd
from distutils.version import LooseVersion
  1. 构造示例数据(若已有DataFrame可跳过此步):
df = pd.DataFrame({
    'Fruit': ['Apple', 'Lemon', 'Lemon', 'Banana', 'Banana', 'Lemon'],
    'Color': ['Green', 'Green', 'Yellow', 'Black', 'Yellow', 'Blue'],
    'Version': ['1.1', '1.4a', '5', '6.8.a', '6.8.a', '6.7.a']
})
  1. 执行组内排序:
    通过groupby('Color')分组后,对每组应用排序逻辑,以LooseVersion转换后的Version作为排序键,降序排列:
sorted_df = df.groupby('Color', group_keys=False).apply(
    lambda group: group.sort_values(
        by='Version',
        key=lambda x: x.apply(LooseVersion),
        ascending=False
    )
)
  1. 重置索引(可选,用于生成连续索引):
sorted_df = sorted_df.reset_index(drop=True)

运行上述代码后,即可得到符合需求的排序结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:05:34