Sorting 熊猫系列sort_index()不能与kind=';合并排序';

Sorting 熊猫系列sort_index()不能与kind=';合并排序';,sorting,pandas,indexing,mergesort,Sorting,Pandas,Indexing,Mergesort,当我遇到以下问题时,我需要一个稳定的数据帧索引排序: 如果一个数据帧成为一个系列(当只有一列与所选内容匹配时),则kind参数将返回一个错误。见示例: import pandas as pd df_a = pd.Series(range(10)) df_b = pd.Series(range(100, 110)) df = pd.concat([df_a, df_b]) df.sort_index(kind='mergesort') 出现以下错误: ----> 6 df.sort_ind

当我遇到以下问题时,我需要一个稳定的数据帧索引排序:

如果一个数据帧成为一个系列(当只有一列与所选内容匹配时),则kind参数将返回一个错误。见示例:

import pandas as pd
df_a = pd.Series(range(10))
df_b = pd.Series(range(100, 110))
df = pd.concat([df_a, df_b])
df.sort_index(kind='mergesort')
出现以下错误:

----> 6 df.sort_index(kind='mergesort')

TypeError: sort_index() got an unexpected keyword argument 'kind'
如果DataFrames(选择了多个列),则mergesort工作正常

编辑:

例如,从数据帧中选择单个列时:

import pandas as pd
import numpy as np
df_a = pd.DataFrame(np.array(range(25)).reshape(5,5))
df_b = pd.DataFrame(np.array(range(100, 125)).reshape(5,5))
df = pd.concat([df_a, df_b])
下面返回一个错误:

df[0].sort_index(kind='mergesort')
…因为选择是铸造到熊猫系列,并且正如所指出的,文档包含一个bug

但是,

df[[0]].sort_index(kind='mergesort')
工作正常,因为它的类型仍然是一个数据帧。

具有
种类
参数

以下是Pandas 0.18.1(文件:
/Pandas/core/series.py
)的此函数定义:

文件
/pandas/core/generic.py
,第39行

_shared_doc_kwargs = dict(axes='keywords for axes', klass='NDFrame',
                          axes_single_arg='int or labels for object',
                          args_transpose='axes to permute (int or label for'
                          ' object)')
所以很可能是熊猫文档中的一个bug


您的
df
是一个系列,它不是一个数据帧
是的,我知道。我需要一个通用的sort_索引,它既适用于数据帧,也适用于系列,而且是稳定的。谢谢@HNMusac,为什么要显式指定
kind='mergesort'
参数?默认的“快速排序”不稳定!它可以更改具有相同密钥的条目的原始顺序。谢谢@HNMusac,这一系列的解决方案怎么样:
s.to_frame().sort_index(kind='mergesort')
肯定也可以!!但是
df[cols].sort_索引(kind='mergesort')
更通用,例如当
cols=[0]
cols=[0,1]
时。谢谢
_shared_doc_kwargs = dict(axes='keywords for axes', klass='NDFrame',
                          axes_single_arg='int or labels for object',
                          args_transpose='axes to permute (int or label for'
                          ' object)')