【问题标题】:How to check if a column exists in a pandas MultiIndex如何检查pandas MultiIndex中是否存在列
【发布时间】:2017-01-01 02:18:18
【问题描述】:

假设我有一个带有 MultiIndex 列的 DataFrame,如下所示:

In [29]: df = pd.DataFrame([[0] * 8], columns = pd.MultiIndex.from_product(
    [['a', 'b'], [1, 2], [2000, 2001]])
)

In [30]: df
Out[30]:
     a                   b
     1         2         1         2
  2000 2001 2000 2001 2000 2001 2000 2001
0    0    0    0    0    0    0    0    0

In [46]: df.columns.levels
Out[46]: FrozenList([[u'a', u'b'], [1, 2], [2000, 2001]])

我需要知道,对于级别 0 的所有值和级别 1 的某些特定值,级别 2 的所有现有唯一值是什么(例如 DataFrame 经历了一些过程,其中对于级别 1 和级别的某些值0,等级 2 下降)。到目前为止,我能想到的最好的是:

In [54]: level_1_val = 2

In [55]: cols_series = df.columns.to_series()

In [56]: cols_series[
   ....:     cols_series.index.get_level_values(1) == level_1_val
   ....: ].index.get_level_values(2).unique()

array([2000, 2001])

有什么更好的方法来做到这一点?

【问题讨论】:

    标签: python pandas group-by multi-index pandas-groupby


    【解决方案1】:

    IIUC

    df.xs(2, axis=1, level=1).groupby(axis=1, level=1).first().columns.values
    
    array([2000, 2001])
    

    或者

    df.xs(2, axis=1, level=1).columns.get_level_values(level=1).unique()
    

    【讨论】:

      猜你喜欢
      • 2014-09-12
      • 2016-09-19
      • 2022-06-30
      • 2021-08-23
      • 2019-02-22
      • 1970-01-01
      • 2013-07-29
      • 2021-09-19
      相关资源
      最近更新 更多