6

pandas では、時間インデックスのクールなスライスが可能です。たとえば、次のようにdfして、2012 年 1 月から 2012 年 3 月までの月のデータフレームをスライスできます。

df['2012-01':'2012-03']

ただし、df時間インデックスが第 2 レベルであるマルチインデックスを持つデータフレームがあります。次のようになります。

                     A         B         C         D         E
a 2001-01-31  0.864841  0.789273  0.370031  0.448256  0.178515
  2001-02-28  0.991861  0.079215  0.900788  0.666178  0.693887
  2001-03-31  0.016674  0.855109  0.984115  0.436574  0.480339
  2001-04-30  0.120924  0.046013  0.659807  0.210534  0.694029
  2001-05-31  0.788149  0.296244  0.478201  0.845042  0.437814
b 2001-01-31  0.497646  0.349958  0.223227  0.812331  0.975012
  2001-02-28  0.542572  0.472267  0.276186  0.970909  0.138683
  2001-03-31  0.960813  0.666942  0.069349  0.282741  0.127992
  2001-04-30  0.491422  0.678742  0.048784  0.612312  0.713472
  2001-05-31  0.718721  0.504403  0.069047  0.253682  0.836386

上記の方法を使用して、特定のレベルでスライスすることもできます。

df.loc['a']['2012-01':'2012-03']

ただし、これは専用ですlevel0 == 'a'

のすべての値に対してこれを行うにはどうすればよいlevel0ですか? 私は次のようなものを期待しています:

                     A         B         C         D         E
a 2001-01-31  0.864841  0.789273  0.370031  0.448256  0.178515
  2001-02-28  0.991861  0.079215  0.900788  0.666178  0.693887
  2001-03-31  0.016674  0.855109  0.984115  0.436574  0.480339
b 2001-01-31  0.497646  0.349958  0.223227  0.812331  0.975012
  2001-02-28  0.542572  0.472267  0.276186  0.970909  0.138683
  2001-03-31  0.960813  0.666942  0.069349  0.282741  0.127992
4

1 に答える 1

8

使用するpd.IndexSlice

df.loc[pd.IndexSlice[:, '2001-01':'2001-3'], :]

ここに画像の説明を入力

于 2016-07-13T08:41:54.173 に答える