43

我有一个带有索引的香草熊猫数据框。我需要检查索引是否已排序。最好不要再次排序。

例如,我可以通过 index.is_unique() 测试索引以查看它是否唯一 是否有类似的测试排序方法?

4

4 回答 4

83

怎么样:

df.index.is_monotonic

于 2013-06-27T16:01:11.140 回答
3

如果sort都允许,请尝试

all(df.sort_index().index == df.index)

如果没有,请尝试

all(a <= b for a, b in zip(df.index, df.index[1:]))

第一个更具可读性,而第二个具有较小的时间复杂度。

编辑

添加我刚刚找到的另一种方法。与第二个类似,但比较被否决

all(df.index[:-1] <= df.index[1:]) 
于 2013-06-26T09:32:21.117 回答
1

对于非指数:

df.equals(df.sort())
于 2014-12-03T16:56:00.183 回答
1

只是为了完整起见,这将是检查数据帧索引是否单调递增且唯一的过程,如果不是,则使其为:

if not (df.index.is_monotonic_increasing and df.index.is_unique):
  df.reset_index(inplace=True, drop=True)

注意即使有重复的索引df.index.is_monotonic_increasing也会返回,所以它必须用.Truedf.index.is_unique

API 参考

于 2021-09-15T21:06:47.850 回答