为什么在排序索引上进行索引查找时出现 PerformanceWarning?

use*_*956 6 python pandas

有谁知道为什么这会给出 PerformanceWarning?

d=pd.DataFrame(
    [
        [1,2,3],
        [1,2,4],
        [1,None,5],
        [2,3,5],
    ],
    columns=['i','j','k']
)
print d.dtypes
d = d.set_index(['i','j'])['k']
d = d.sort_index()

print d.loc[(2,3)] #  PerformanceWarning: indexing past lexsort depth may impact performance.
Run Code Online (Sandbox Code Playgroud)

我从文档中的理解是 PerformanceWarning 遵循不排序索引(索引已排序)。

use*_*956 5

事实证明这是一个开放的错误:

@ayhan 的评论提供了解决方法:

d = d.sort_index(level=d.index.names)
Run Code Online (Sandbox Code Playgroud)

这应该是以下的默认行为:

d = d.sort_index()
Run Code Online (Sandbox Code Playgroud)