无法使用元组值来定位多重索引的.loc

2024-06-28 10:50:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个多索引的数据帧。多重索引的一个级别有一个元组作为值

当我尝试基于元组对xslice进行索引时,我从未得到任何结果

我怀疑元组被解释得很奇怪(不是作为一个简单的标签,而是作为索引的其他指令)

要演示的玩具示例:

idx = pd.IndexSlice

foo =  ["alpha", "bravo", "tango"]
bar =  ["mike", "matt", "dave"]
pair = [(1,2), (8,7), (12,14)]
index = pd.MultiIndex.from_product([foo, bar, pair],  names=['foo', 'bar', 'pair'])
zf = pd.DataFrame(index=index)
zf['filler']=range(3*3*3)


zf.loc[idx[:, "mike", :],:]   #ok
zf.loc[idx['bravo', :, :],:]   #ok
zf.loc[idx['bravo', 'mike', :],:]   #ok
zf.loc[idx[:,:, (8,7)],:]  #returns nothing

Tags: 数据indexfoobarok级别locpd
1条回答
网友
1楼 · 发布于 2024-06-28 10:50:39

在元组周围添加一个[]

print (zf.loc[idx[:,:, [(8,7)]],:])
                   filler
foo   bar  pair          
alpha mike (8, 7)       1
      matt (8, 7)       4
      dave (8, 7)       7
bravo mike (8, 7)      10
      matt (8, 7)      13
      dave (8, 7)      16
tango mike (8, 7)      19
      matt (8, 7)      22
      dave (8, 7)      25

相关问题 更多 >