Skip to main content
 首页 » 编程设计

python之我如何对 Pandas 中的语义版本进行排序

2025年05月04日16mq0036

我有一个软件版本列表。软件遵循语义版本规范,即有主版本、次版本和补丁版本:

  • 0.1
  • 0.2
  • 0.2.1
  • 0.3
  • ...
  • 0.10
  • 0.10.1

pandas 有没有办法对这些版本进行排序,使 0.2 大于 0.1 但小于 0.10?

请您参考如下方法:

使用排序 的 Pandas 解决方案,StrictVersion solution并分配给列:

print (df) 
      ver 
0     0.1 
1     0.2 
2    0.10 
3   0.2.1 
4     0.3 
5  0.10.1 
 
from distutils.version import StrictVersion 
 
df['ver'] = sorted(df['ver'], key=StrictVersion) 
print (df) 
      ver 
0     0.1 
1     0.2 
2   0.2.1 
3     0.3 
4    0.10 
5  0.10.1 

编辑:

对于排序索引,可以使用 reindex :

print (df) 
        a  b 
ver          
0.1     1  q 
0.2     2  w 
0.10    3  e 
0.2.1   4  r 
0.3     5  t 
0.10.1  6  y 
 
from distutils.version import StrictVersion 
 
df = df.reindex(index=pd.Index(sorted(df.index, key=StrictVersion))) 
print (df) 
        a  b 
0.1     1  q 
0.2     2  w 
0.2.1   4  r 
0.3     5  t 
0.10    3  e 
0.10.1  6  y