Pandas df MultiIndex returns 不同 min/max 使用 get_level_values() vs index[#]

Pandas df MultiIndex returns different min/max using get_level_values() vs index[#]

我有一个带MultiIndex的df,0级是Datetime。 运行 进入以下内容:

df_fact.index.get_level_values(0).min()
Out[145]: Timestamp('2019-08-14 00:00:00')

df_fact.index.levels[0].min()
Out[146]: Timestamp('2018-09-10 00:00:00')

df_fact.index.get_level_values(0).max()
Out[147]: Timestamp('2019-11-11 23:45:00')

df_fact.index.levels[0].max()
Out[148]: Timestamp('2019-11-15 17:00:00')

为什么会有不同的结果?我错过了什么?

NM,想通了。把这个留在这里以防有人有同样愚蠢的问题。

我在上游进行了 df.xs 切片操作,减少了 DatetimeIndex,这留下了未使用的级别值,这些值(令人困惑地)只是被 remove_unused_levels() 称为级别。

已修复:

df_fact.index = df_fact.index.remove_unused_levels()

df_fact.index.levels[0].min()
Out[193]: Timestamp('2019-08-14 00:00:00')

http://pandas-docs.github.io/pandas-docs-travis/reference/api/pandas.MultiIndex.remove_unused_levels.html