我使用数据框中的三列进行索引:
df = df.set_index(['col1','col2','col3'])
然后我尝试获取与特定索引对应的行。我尝试了很多不同的方法:
x = df.loc[(123,456,789)]
x = df.ix[(123,456,789)]
x = df.loc[123,456,789]
x = df.ix[123,456,789]
这些选项都不起作用。我得到的错误消息是:
raise e1
KeyError: 'MultiIndex lexsort depth 0, key was length 3'
我检查了索引的使用值是否存在:
inds = []
for ind in df.index:
inds.append(ind)
if (123,456,789) in inds:
print 'in'
else:
print 'out'
结果我得到in
(因此,这个使用的索引值存在)。我做错了什么?
答案 0 :(得分:2)
对df进行排序后,所有loc / ix方法都应该有效。
df = df.set_index(['col1','col2','col3'])
df.sort(inplace=True)