本文首发于微信公众号“Python数据之道”(ID:PyDataRoad)
前言
写这篇文章的起由是有一天微信上一位朋友问到一个问题,问题大体意思概述如下:
现在有一个pandas的Series和一个python的list,想让Series按指定的list进行排序,如何实现?
这个问题的需求用流程图描述如下:

我思考了一下,这个问题解决的核心是引入pandas的数据类型“category”,从而进行排序。
在具体的分析过程中,先将pandas的Series转换成为DataFrame,然后设置数据类型,再进行排序。思路用流程图表示如下:

分析过程
- 引入pandas库
import pandas as pd
- 构造Series数据
s = pd.Series({
'a':1,'b':2,'c':3})
s
a 1
b 2
c 3
dtype: int64
s.index
Index(['a', 'b', 'c'], dtype='object')
- 指定的list,后续按指定list的元素顺序进行排序
list_custom = ['b', 'a', 'c']
list_custom
['b', 'a', 'c']
- 将Series转换成DataFrame
df = pd.DataFrame(s) df = df.reset_index() df.columns = ['words', 'number'] df

本文介绍了如何使用Pandas的DataFrame根据指定的list进行排序。内容涉及将Series转换为DataFrame,设置数据类型为"category",并针对list元素多于或少于DataFrame列元素的情况,分别使用set_categories方法进行排序。总结了在不同情况下适用的方法,如相等情况使用reorder_categories或set_categories,元素多的情况仅使用set_categories,元素少的情况仍用set_categories,未包含的元素将显示为NaN。
最低0.47元/天 解锁文章
6484





