我有一个软件版本列表。软件遵循语义版本规范,即有主版本、次版本和补丁版本:
- 0.1
- 0.2
- 0.2.1
- 0.3
- ...
- 0.10
- 0.10.1
pandas 有没有办法对这些版本进行排序,使 0.2 大于 0.1 但小于 0.10?
熊猫解决方案sorted
, 严格版本解决方案 https://stackoverflow.com/q/2574080/2901002并分配给列:
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
EDIT:
对于排序索引可以使用reindex http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.reindex.html:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)