【发布时间】:2016-09-28 13:01:59
【问题描述】:
当我遇到这个问题时,我需要对 DataFrames 进行稳定的索引排序:
在 DataFrame 变成 Series 的情况下(当只有一列与选择匹配时), 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 工作正常。
编辑:
例如从 DataFrame 中选择单列时:
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')
...因为选择被强制转换为熊猫系列,并且正如所指出的 pandas.Series.sort_index 文档包含一个错误。
然而,
df[[0]].sort_index(kind='mergesort')
工作正常,因为它的类型仍然是 DataFrame。
【问题讨论】:
标签: sorting pandas indexing mergesort