繁体   English   中英

如何检查熊猫MultiIndex中是否存在列

[英]How to check if a column exists in a pandas MultiIndex

假设我有一个DataFrame,它的MultiIndex是这样的列:

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])

有什么更好的方法?

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM