最佳答案
数据帧的索引是MultiIndex的最常见的方法是什么?
简单的假设:
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
我如何选择行有“a”级别“一”?
col
one two
a t 0
u 1
v 2
w 3
此外,我如何能够在输出中删除级别“1”?
col
two
t 0
u 1
v 2
w 3
< p > 问题1 b < br >
我如何在级别“2”上切片所有值为“t”的行?< / p >
col
one two
a t 0
b t 4
t 8
d t 12
如何在“一级”中选择与“b”和“d”项对应的行?
col
one two
b t 4
u 5
v 6
w 7
t 8
d w 11
t 12
u 13
v 14
w 15
< p > 问题2 b < br >
我如何在“第二层”中获得与“t”和“w”对应的所有值?< / p >
col
one two
a t 0
w 3
b t 4
w 7
t 8
d w 11
t 12
w 15
(x, y)
我如何检索一个横截面,即,从df
索引具有特定值的单行?具体来说,我如何检索('c', 'u')
的横截面,由
col
one two
c u 9
[(a, b), (c, d), ...]
如何选择对应于('c', 'u')
和('a', 'w')
的两行?
col
one two
c u 9
a w 3
如何检索级别“一”中对应“a”或级别“二”中对应“t”的所有行?
col
one two
a t 0
u 1
v 2
w 3
b t 4
t 8
d t 12
如何切片特定的横截面?对于“a”和“b”,我想选择子级别为“u”和“v”的所有行,对于“d”,我想选择子级别为“w”的行。
col
one two
a u 1
v 2
b u 5
v 6
d w 11
w 15
问题7将使用一个由数字级别组成的独特设置:
np.random.seed(0) mux2 = pd.MultiIndex.from_arrays([ list('aaaabbbbbccddddd'), np.random.choice(10, size=16) ], names=['one', 'two']) df2 = pd.DataFrame({'col': np.arange(len(mux2))}, mux2) col one two a 5 0 0 1 3 2 3 3 b 7 4 9 5 3 6 5 7 2 8 c 4 9 7 10 d 6 11 8 12 8 13 1 14 6 15
我如何获得级别“2”中值大于5的所有行?
col
one two
b 7 4
9 5
c 7 10
d 6 11
8 12
8 13
6 15
注意:这篇文章将不介绍如何创建multiindex,如何对它们执行赋值操作,或任何与性能相关的讨论(这些是另一个单独的主题)。