import pandas as pd
#数据集
df = pd.DataFrame({'word':['a','b','c'], 'num':[2,1,3]})
#自定义排序顺序,此顺序对应为升序ascending=True
list_sorted = ['b', 'a', 'c']
#对相关列进行自定义排序
df['word'] = df['word'].astype('category').cat.set_categories(list_sorted)
#结果
df_sortes = df.sort_values(by=['word'], ascending=True)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

说明

根据指定的list_sorted所包含元素比DataFrame中需要排序的列的元素的多或少,进行自定义排序时可以分为三种情况:

  • 相等的情况下,可以使用 reorder_categories和 set_categories方法;
  • list的元素比较多的情况下, 可以使用set_categories方法;
  • list的元素比较少的情况下, 也可以使用set_categories方法,但list中没有的元素会在DataFrame中以NaN表示。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注