如何 return pandas 中多索引的最后一个索引

how to return last index on the multiindex in pandas

我想从多索引中获得一个 return 值。这就是我的意思:

import pandas as pd
import numpy as np

index = pd.MultiIndex.from_product([['2022-05-22', '2022-05-23', '2022-05-24', '2022-05-25'], ['a', 'b', 'c']])
data = pd.Series(np.random.rand(12), index=index)
data.index.names = ['date', 'var']
data

结果将在:

date        var
2022-05-22  a      0.757109
            b      0.149882
            c      0.285188
2022-05-23  a      0.020857
            b      0.274391
            c      0.048735
2022-05-24  a      0.459640
            b      0.585560
            c      0.073415
2022-05-25  a      0.991139
            b      0.681288
            c      0.284437
dtype: float64

如果我输入:data.index[-1] 我会得到:('2022-05-25', 'c')

如何在没有第二个索引的情况下只得到 2022-05-25 结果? 另外如何获得 2022-05-24 (第二低的 0 级索引)作为 return 值?

您可以提取想要的级别并保留唯一值:

l = data.index.get_level_values('date').unique()

l[-1]
# '2022-05-25'

l[-2]
# '2022-05-24'

其他方法,unstack

idx = data.unstack().index

idx[-1]
# '2022-05-25'

idx[-2]
# '2022-05-24'

当你 运行 type(data.index[-1]) 时会发生什么?

这意味着您可以像访问 python 中的任何其他 tuple 一样访问它。

data.index[-1][0]