查询多索引数据框后获取熊猫多索引的值

时间:2021-05-17 16:37:30

标签: python pandas multi-index

前提是我有一个多索引数据帧,如下所示:

将熊猫导入为 pd

import pandas as pd
import numpy as np

input_id = np.array(['input_id'])
docType = np.array(['pre','pub','app','dw'])
docId = np.array(['34455667'])
sec_type = np.array(['bib','abs','cl','de'])
sec_ids = np.array(['x-y','z-k'])
index = pd.MultiIndex.from_product([input_id,docType,docId,sec_type,sec_ids])
content= [str(np.random.randint(1,10))+ '##' + str(np.random.randint(1,10)) for i in range(len(index))]
df = pd.DataFrame(content, index=index, columns=['content'])
df.rename_axis(index=['input_id','docType','docId','secType','sec_ids'], inplace=True)

我想查询多索引 DF

# query a multiindex DF
idx = pd.IndexSlice
df.loc[idx[:,'pub',:,'de',:]]

结果:

enter image description here

我想直接获取多索引列 sec_ids 的值作为列表。我必须如何修改才能获得以下结果:

['x-y','z-k']

谢谢

1 个答案:

答案 0 :(得分:2)

您可以使用 MultiIndex.get_level_values() 方法获取 MultiIndex 特定级别的值。所以在这种情况下,在切片之后调用它。

df.loc[idx[:,'pub',:,'de',:]].index.get_level_values('sec_ids').tolist()
#['x-y', 'z-k']