【问题标题】:Pandas df MultiIndex returns different min/max using get_level_values() vs index[#]Pandas df MultiIndex 使用 get_level_values() vs index[#] 返回不同的最小值/最大值
【发布时间】:2020-03-13 06:54:43
【问题描述】:

我有一个带有 MultiIndex 的 df,0 级是日期时间。遇到以下情况:

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')

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

【问题讨论】:

  • 请提供一个示例数据框。

标签: pandas datetime max min multi-index


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2010-10-04
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    相关资源
    最近更新 更多