我创建了一个名为key_mat的多索引DataFrame。它只是喜欢
cnt
keys minutes
0000 21:01:00 1
0002 19:08:00 2
16:07:00 1
我想使用.loc
>>> key_mat.loc[['0002']]
>>>
cnt
keys minutes
0002 19:08:00 2
16:07:00 1
现在,我有一个keys
key_list = ['0000','0001','0004'...]
列表和一个minutes
minutes_list = ['19:08:00','20:07:00',...]
列表。我想选择cnt
列{{1} } keys
中的key_list
和minutes
中的minutes_list
。我尝试使用.loc
,但我找到key_mat.loc[[('0000','21:01:00'),('0002','19:08:00')]]['cnt']
的方式。但这不能满足我的需求。我找到了一种使用query
,key_mat.query('keys in {key_list} and minutes in {minutes_list}'.format(key_list = key_list, minutes_list =minutes_list))
的方法。有没有办法使用.loc
或.ix
来完成我的任务?
答案 0 :(得分:1)
您需要slicers,但需要sort_index
,因为错误:
KeyError:' MultiIndex Slicing要求索引完全是lexsorted tuple len(2),lexsort depth(1)'
key_list = ['0000','0001','0004']
minutes_list = ['19:08:00','21:01:00']
df.sort_index(inplace=True)
idx = pd.IndexSlice
print (df.loc[idx[key_list,minutes_list],:])
cnt
keys minutes
0000 21:01:00 1