Pandas df MultiIndex使用get_level_values()与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')

为什么会有不同的结果?我想念什么?

liuzuowei521 回答:Pandas df MultiIndex使用get_level_values()与index [#]返回不同的最小值/最大值

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

本文链接:https://www.f2er.com/3084614.html

大家都在问