我有一个数据行,其中包含人的名字。
现在我想按名称而不是字母顺序而是给定顺序对数据框进行排序。因此,例如,我想按以下顺序在名称行上排序数据框:
L = ['marc','paul','beck','julia','rest']
如果我有一个数据行,其中包含一行名称,那么我想让marc在顶部,然后是paul,beck等。
我如何在python中做到这一点?
最佳答案
如果需要按列对数据进行重新排序,请将所有值转换为ordered categoricals,因此可能是sort_values
:
df = pd.DataFrame({'A':['paul','paul','julia','marc','paul','beck','beck','julia']})
L = ['marc','paul','beck','julia','rest']
df['A'] = pd.CategoricalIndex(df['A'], ordered=True, categories=L)
df = df.sort_values('A')
print (df)
A
3 marc
0 paul
1 paul
4 paul
5 beck
6 beck
2 julia
7 julia