使用 Multiindex 从 Pandas DataFrame 中选择数据
Posted
技术标签:
【中文标题】使用 Multiindex 从 Pandas DataFrame 中选择数据【英文标题】:Sub-select Data from Pandas DataFrame with Multiindex 【发布时间】:2019-12-02 02:58:15 【问题描述】:我需要从具有多索引的给定数据框中选择一些数据。 现在我需要将它按第二个索引列拆分。
Data1 Data2 Data3 Data4
first Second
A 2010
B 2010
C 2010
A 2011
B 2011
C 2011
D 2011
E 2011
A 2012
B 2012
C 2012
A 2013
B 2013
C 2013
E 2013
A 2014
B 2014
C 2014
A 2015
B 2015
C 2015
现在我想选择 2010 年到 2014 年之间的所有数据,我应该如何对这个 Dataframe 进行子索引?
【问题讨论】:
在这里提问:***.com/questions/45128523/… 【参考方案1】:您也可以使用query
df.query('2010 <= Second <= 2014')
Out[314]:
n
first Second
A 2010 1
B 2010 1
C 2010 1
A 2011 1
B 2011 1
C 2011 1
D 2011 1
E 2011 1
A 2012 1
B 2012 1
C 2012 1
A 2013 1
B 2013 1
C 2013 1
E 2013 1
A 2014 1
B 2014 1
C 2014 1
【讨论】:
如果秒不是数字数据(字符串,日期时间索引 obj)怎么办。这不起作用 @Kid:当然,query
有其局限性。我根据您的示例数据给出了答案。如果您的Second
是字符串,query
仍然有效,但答案会有所不同。
是的。很高兴我能帮忙:)【参考方案2】:
我通常使用get_level_values
lvl1=df.index.get_level_values(1)
df=df[(lvl1>2010)&(lvl1<=2014)]
【讨论】:
以上是关于使用 Multiindex 从 Pandas DataFrame 中选择数据的主要内容,如果未能解决你的问题,请参考以下文章
使用 Multiindex 从 Pandas DataFrame 中选择数据
我需要从包含列表的字典中使用 MultiIndex 在 Pandas 中创建一个 DataFrame
使用元组键从字典创建 MultiIndex pandas DataFrame