在熊猫上切片多索引

时间:2020-05-31 09:31:51

标签: python pandas

我有一个具有以下形式的多重索引的数据框:

(label, date)

其中label是字符串,而date是DateTimeIndex。

我想用date分割数据框;例如,我想获取2007年到2009年之间的所有行:

df.loc[:, '2007':'2009']

似乎第二部分(我在其中放置日期)实际上是对列进行切片。

如何在date上切片?

1 个答案:

答案 0 :(得分:1)

您可以检查partial string indexing

DatetimeIndex部分字符串索引也可用于具有MultiIndex的DataFrame:

df = pd.DataFrame(np.random.randn(20, 1),
                  columns=['A'],
                  index=pd.MultiIndex.from_product(
                            [['a', 'b'], pd.date_range('20050101', periods=10, freq='10M'),
                             ]))
idx = pd.IndexSlice
df1 = df.loc[idx[:, '2007':'2009'], :]
print (df1)
                     A
a 2007-07-31  0.325027
  2008-05-31 -1.307117
  2009-03-31 -0.556454
b 2007-07-31  1.808920
  2008-05-31  1.245404
  2009-03-31 -0.425046

另一个想法是将locaxis=0参数一起使用:

df1 = df.loc(axis=0)[:, '2007':'2009']
print (df1)
                     A
a 2007-07-31  0.325027
  2008-05-31 -1.307117
  2009-03-31 -0.556454
b 2007-07-31  1.808920
  2008-05-31  1.245404
  2009-03-31 -0.425046