我有一个软件版本列表。软件遵循语义版本规范,即有主版本、次版本和补丁版本:
- 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
