2017-05-28 46 views
0

說我有一個pandas.DataFrameMultiIndex,我知道它有兩層,year是第一位的,我想保持特定的幾年,我所能做的刪除,不知道在那裏

df = df.loc[yearStart:, :] 

如果我知道這個指數只有兩個級別,但不是在這year是,我可以破解一些髒

if df.index.names[0] == 'year': 
    df = df.loc[yearStart:, :] 
else 
    df = df.loc[:, yearStart:] 

如果我知道這是在索引中,但沒有哪個級別,也沒怎麼指數有多少水平?如果year不在指數,而常規的專欄中,我可以做

df = df.loc[df.year >= yearStart] 

是否有類似通用的指標的東西嗎?

回答

4

您可以使用get_level_values獲取索引級別的列狀視圖。

df = pd.DataFrame({'a': range(100)}, index=pd.MultiIndex.from_product([range(10), range(2010,2020)], names=['idx1', 'year'])) 

df.head() 
Out[41]: 
      a 
idx1 year 
0 2010 0 
    2011 1 
    2012 2 
    2013 3 
    2014 4 

df[df.index.get_level_values('year') >= 2015].head() 
Out[42]: 
      a 
idx1 year 
0 2015 5 
    2016 6 
    2017 7 
    2018 8 
    2019 9 
相關問題