df = pd.DataFrame({'a':np.append(np.random.randint(0,10,10000), -1),
'b':np.append(np.random.randint(0,10,10000), -1),
'c':np.append(np.random.randint(0,10,10000), -1),
'value':np.random.randint(0,100,10001)})
dfi = df.set_index(['a','b','c'])
dfi.sortlevel(inplace = True)
dfi.xs((2,1,7), drop_level=True)
value time
a b c
2 1 7 33 1970-01-01 00:00:00.000000033
7 70 1970-01-01 00:00:00.000000070
7 75 1970-01-01 00:00:00.000000075
7 53 1970-01-01 00:00:00.000000053
7 28 1970-01-01 00:00:00.000000028
7 21 1970-01-01 00:00:00.000000021
7 36 1970-01-01 00:00:00.000000036
7 43 1970-01-01 00:00:00.000000043
7 67 1970-01-01 00:00:00.000000067
9 rows × 2 columns
dfi.xs((-1,-1,-1), drop_level=True)
(一个匹配)
但是如果dfi.xs((2,1), drop_level=True)
?
pandas version'0.13.1'
答案 0 :(得分:1)
你所要求的是没有意义的,因为定义你有多个匹配。
如果你愿意,你可以这样做:
In [43]: dfi.xs((2,1,7)).reset_index(drop=True)
Out[43]:
value
0 49
1 98
2 2
3 80
4 47
5 74
6 37
7 23
8 0
9 7
10 58
11 82
12 44
[13 rows x 1 columns]
答案 1 :(得分:0)
问题在此处提交:https://github.com/pydata/pandas/issues/6507
让我知道是否有任何进展或这确实是一种定义的行为。