Cai*_*gnm 4 python sorting python-3.x pandas
我有一个Python熊猫数据框,在其中一个名为列status含有三种可能的值:ok,must read x more books,does not read any books yet,在x高于一个整数0.
我想status根据上面的顺序对值进行排序.
例:
name status
0 Paul ok
1 Jean must read 1 more books
2 Robert must read 2 more books
3 John does not read any book yet
Run Code Online (Sandbox Code Playgroud)
我发现了一些有趣的提示,使用Pandas Categorical和map但我不知道如何处理修改字符串的变量值.
我怎样才能做到这一点?
使用:
a = df['status'].str.extract('(\d+)', expand=False).astype(float)
d = {'ok': a.max() + 1, 'does not read any book yet':-1}
df1 = df.iloc[(-df['status'].map(d).fillna(a)).argsort()]
print (df1)
name status
0 Paul ok
2 Robert must read 2 more books
1 Jean must read 1 more books
3 John does not read any book yet
Run Code Online (Sandbox Code Playgroud)
说明:
extract整数regex \d+dictionary用于map非数值NaN由s fillna为numeric Seriesiloc排序值