使用 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

从 pandas MultiIndex 中选择列

使用元组键从字典创建 MultiIndex pandas DataFrame

在 Pandas 中使用 .loc 和 MultiIndex

从字典列表创建 Pandas MultiIndex 的最佳方法是啥?