我有一个这样的数据框:
A B C D
b 3 3 4
a 1 2 1
a 1 2 1
d 4 4 1
d 1 2 1
c 4 5 6
现在,我希望根据A列中的值对行进行重新排序。
我不想对值进行排序,而是按照特定的顺序['b', 'd', 'c', 'a']
对它们重新排序,就像我期望的那样:
A B C D
b 3 3 4
d 4 4 1
d 1 2 1
c 4 5 6
a 1 2 1
a 1 2 1
这是一个很好的用例pd.Categorical
,因为您已经订购了类别。只需将该列分类并标记即可ordered=True
。然后,sort_values
应该做剩下的事情。
df['A'] = pd.Categorical(df.A, categories=['b', 'd', 'c', 'a'], ordered=True)
df.sort_values('A')
如果要保持列不变,可以只使用loc
和索引。
df.loc[pd.Series(pd.Categorical(df.A,
categories=['b', 'd', 'c', 'a'],
ordered=True))\
.sort_values()\
.index\
]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句