python - 如何按给定的索引顺序对 Series 或 DataFrame 进行排序?

标签 python sorting pandas dataframe

假设我有这样一个系列:

In [19]: sr
Out[19]: 
a    1
b    2
c    3
d    4
dtype: int64

In [20]: sr.index
Out[20]: Index([u'a', u'b', u'c', u'd'], dtype='object')

我不想按字典顺序排序,而是想根据自定义顺序对这个系列进行排序,比如 cdab。我该怎么做?

如果是DataFrame怎么办;如何按给定的索引列表对其进行排序?

最佳答案

您可以通过多种不同的方式做到这一点。对于 Series 对象,您可以像这样简单地传递索引的首选顺序:

>>> sr[['c','d','a','b']]
c    3
d    4
a    1
b    2
dtype: int64

或者,Series 和 DataFrame 对象都有一个 reindex 方法。这使您在对索引进行排序时具有更大的灵 active 。例如,您可以将新值插入索引(甚至选择它应该具有的值):

>>> sr.reindex(['c','d','a','b','e'])
c     3
d     4
a     1
b     2
e   NaN      # <-- new index location 'e' is filled with NaN
dtype: int64

Series 和 DataFrame 对象的另一个选择是访问索引标签的常用 loc 方法:

>>> sr.loc[['c','d','a','b']]
c    3
d    4
a    1
b    2
dtype: int64

关于python - 如何按给定的索引顺序对 Series 或 DataFrame 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27011903/

相关文章:

python - 如何将 django 模型方法转换为参数?

java - 按多个条件对 JTable 进行排序

python - 将 Pandas 数据框作为 CSV 文件导出到 Azure Data Lake Storage?

javascript - 是否有基于浏览器的 Websocket 监听器实现?

python - 使用 SWIG 将 C 结构数组访问到 Python

python - 如何检查 ManyToMany 字段是否为空?

c++ - 排序数组/字符串 vector

algorithm - 计数排序——效率

python - 通过基于 "_"拆分文本来替换 Pandas 列

python - 'one-hot-encoded' 的 'feature Importance' 变量的显示名称