提问者:小点点

为什么在多索引的索引中有空项


这只是为多索引数据帧的初学者分享一个非常基本的概念。

我注意到2索引(多索引)DF的索引列中有空项。 虽然这一定是多索引数据帧的基础,但我对它并不熟悉,已经忘记了它。 我没有很快注意到这可能的意义,因为我有非常大的数字作为索引值,你甚至没有开始检查它们的重要性。 使用df.sort_index(inplace=true)进行排序也无助于清除空项。 乍一看,数据集本身的第一个索引有部分空行。 搜索“多索引的空项”也无济于事。 这就是为什么我要和其他多索引数据帧的初学者分享这个非常简单的问题。

以下是索引列“A_IDX”中的“空项”:

A_idx B_idx
12344 12345   0.289163 -0.464633 -0.060487
      12345   0.224442  0.177609  2.156436
12346 12346  -0.262329 -0.248384  0.925580
12347 12347   0.051350  0.452014  0.206809
      12348   2.757255 -0.739196  0.183735
      12349  -0.064909 -0.963130  1.364771
12350 12351  -1.330857  1.881588 -0.262170

共1个答案

匿名用户

这只是为多索引数据帧的初学者分享一个非常基本的概念。

“空”项是multiindex视图的一部分,它们实际上并不是空的:

  • 如果“a_idx”索引分配给多个“b_idx”索引值,则“a_idx”索引不会重复,而是在该时刻成为父索引。
  • 当“a_idx”索引指向多个值行而“b_idx”索引没有更改时,a_idx也可以是另一时刻的子值。
  • 父级和子级之间的变化在这里不是一个真正的层次结构,它仅仅取决于两个索引的值,这两个索引都在同一级别上。

如果您在不同级别上有索引,那么只有一个方向的层次结构是可能的,父项的空项宁愿是NaN,并且索引名不会在输出的同一行中。 在下面的内容中,“first”和“second”是具有相同权限的索引名,它们位于输出的同一行。

first second
bar   one     0.289163 -0.464633 -0.060487
      two     0.224442  0.177609  2.156436
baz   one    -0.262329 -0.248384  0.925580
foo   one     0.051350  0.452014  0.206809
      two     2.757255 -0.739196  0.183735
      three  -0.064909 -0.963130  1.364771
qux   one    -1.330857  1.881588 -0.262170

感谢这个示例,访问pandas DataFrame中内部多索引级别的最后一个元素。

这实际上意味着:

first second
bar   one     0.289163 -0.464633 -0.060487
bar   two     0.224442  0.177609  2.156436
baz   one    -0.262329 -0.248384  0.925580
foo   one     0.051350  0.452014  0.206809
foo   two     2.757255 -0.739196  0.183735
foo   three  -0.064909 -0.963130  1.364771
qux   one    -1.330857  1.881588 -0.262170