2016-05-22 37 views
4

我的問題類似於How to check if a column exists in Pandas,但是對於多指標列的情況。熊貓 - 如何檢查多指標列是否存在

我想在多索引列數據框中使用源自另一個文件的列名來處理值 - 因此需要檢查該列是否存在。代表性例子是如下:

import pandas as pd 
from numpy.random import randint,randn 

df = pd.DataFrame({ 'A': [randint(0,3) for p in range(0,12)],'B': [0.1* randint(0,3) for p in range(0,12)], 
     'C': [0.1*randint(0,3) for p in range(0,12)],'D': randn(12), 
    }) 

df1 = df.groupby(['A','B','C']).D.sum().unstack(-1) 
df1 = df1.T 
df1 
A   0     1        2   
B   0.0  0.2  0.0  0.1  0.2  0.0  0.1 
C                   
0.0  NaN  NaN  NaN 0.845316  NaN 0.555513  NaN 
0.1  NaN 0.139371  NaN  NaN  NaN  NaN -0.260868 
0.2 5.002509  NaN 0.637353 0.438863 0.943098  NaN  NaN 

df1[1][0.1] 
C 
0.0 0.845316 
0.1   NaN 
0.2 0.438863 

在上述例子中訪問df1[0][0.1]將導致關鍵錯誤。如何檢查多索引列是否存在,以便在處理期間跳過不存在的列?

謝謝!

回答

8

你能想到的多指數像元組數組的,所以可以訪問諸如:

df1[(0, 0.1)] 

和測試,如:

(0, 0.1) in df1.columns: 
+0

作品!感謝您提供非常有幫助的見解。 – kip6000