如何 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]
我想从多索引中获得一个 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]