假设我有这样一个系列:
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/