【问题标题】:Selecting multiple columns from one level of a multi-indexed pandas dataframe [duplicate]从多索引熊猫数据框的一级中选择多列[重复]
【发布时间】:2021-10-14 03:22:52
【问题描述】:

我想知道是否可以从一个多索引级别中选择多个项目?

假设我有一个这样的熊猫数据框:

lvl_1      A             B
lvl_2      d      c      f      e
0     -1.406  0.548 -0.635  0.576
1     -0.212 -0.583  1.012 -1.377
2      0.951 -0.349 -0.477 -1.230
3      0.451 -0.168  0.949  0.545
4     -0.362 -0.855  1.676 -2.881
5      1.283  1.027  0.085 -1.282
6      0.583 -1.406  0.327 -0.146
7     -0.518 -0.480  0.139  0.851
8     -0.030 -0.630 -1.534  0.534
9      0.246 -1.558 -1.885 -1.543

我想使用数据框的 lvl_2 选择特定列

尝试类似df.xs(['c','e'], level='lvl_2', axis=1) 会导致错误:

KeyError: 'e'

【问题讨论】:

  • 似乎这个答案有你需要的一切。 stackoverflow.com/questions/53927460/…
  • df.loc[:, df.columns.get_level_values(1).isin(["c","e"])]?
  • 谢谢大家,对不起,我是堆栈溢出的新手 :)

标签: python pandas dataframe multi-index


【解决方案1】:

您可以将pd.IndexSlice.loc 一起使用,如下所示:

idx = pd.IndexSlice
df.loc[:, idx[:, ['c', 'e']]]

结果:

lvl_1      A      B
lvl_2      c      e
0      0.548  0.576
1     -0.583 -1.377
2     -0.349 -1.230
3     -0.168  0.545
4     -0.855 -2.881
5      1.027 -1.282
6     -1.406 -0.146
7     -0.480  0.851
8     -0.630  0.534
9     -1.558 -1.543

【讨论】:

    猜你喜欢
    • 2014-10-01
    • 2017-10-30
    • 2018-11-26
    • 1970-01-01
    • 2020-01-12
    • 2018-05-28
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多