2016-08-24 69 views
2

存在一列比方說,我有這樣一個多指標一個數據幀列:如何檢查是否在大熊貓多指標

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的所有現有唯一值是什麼(例如,DataFrame經歷某個過程,其中對於一級和零級的一些值,級別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]) 

什麼是更好的方法來做到這一點?

回答

4

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