从这个问题复制示例,考虑以下数据框:
mux = pd.MultiIndex.from_arrays([
list('aaaabbbbbccddddd'),
list('tuvwtuvwtuvwtuvw')
], names=['one', 'two'])
df = pd.DataFrame({'col': np.arange(len(mux))}, mux)
col
one two
a t 0
u 1
v 2
w 3
b t 4
u 5
v 6
w 7
t 8
c u 9
v 10
d w 11
t 12
u 13
v 14
w 15
假设我想保留多重索引的第二层级中的两行。即我的最终数据框如下:
col
one two
a t 0
u 1
b t 4
u 5
c u 9
v 10
d w 11
t 12
如何最好地实现上述目标?理想情况下,我希望像这样做(显然是错误的语法)
df.iloc[(:, :2)]
即所有来自级别0的值,以及来自级别1的前两个值。
range(1, n, 2)
索引。 - skgbanga1, 3, 5, 7...
还是每个第一层的值的第二层?即整个第二层将是u,w,u,w...
,而每个第一层将是a:u,w
,b:u,w
,c:v
... - Andy L.3
和获取无论索引级别如何的通用位置3
之间存在差异。这就是为什么我想在回答之前澄清。如果您想要一种通用的方法来获取第二个索引,可以使用get_level_values
、query
、xs
、groupby.nth
或带有pd.IndexSlice
和元组的loc
... 这非常广泛。@CS95在这个主题上有一个很棒的帖子,链接在这里https://dev59.com/YVQJ5IYBdhLWcg3wZlGZ。我建议您阅读它以获取更多细节。 - Andy L.