假设我有pandas.DataFrame
MultiIndex
,我知道它有两个等级,而year
是第一个,我想保留特定的年份,我可以做< / p>
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]
索引是否有类似通用的内容?
答案 0 :(得分: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