2014-03-14 29 views
4

刪除單個(子)列我有以下數據幀df從多指標

col1  col2  col3 
    a  b  a  b  a  b  
1 ... 
2 
3 

,只是不能找出如何刪除僅單個「次級」,例如df.col1.a

我可以df.col1.drop('a', axis=1),但重新分配它像df.col1=df.col1.drop('a', axis=1)失敗。

邏輯結構df.colums我明白了,但我該如何修改它?

回答

5

Drop是一種非常靈活的方法,並且有相當多的方法來使用它:

In [11]: mi = pd.MultiIndex.from_product([['col1', 'col2', 'col3'], ['a', 'b']]) 

In [12]: df = pd.DataFrame(1, index=[0], columns=mi) 

In [13]: df 
Out[13]: 
    col1  col2  col3 
     a b  a b  a b 
0  1 1  1 1  1 1 

跌落使用一個元組一列:

In [14]: df.drop(('col1', 'a'), axis=1) 
Out[14]: 
    col1 col2  col3 
     b  a b  a b 
0  1  1 1  1 1 

或使用列表清單元組:

In [15]: df.drop([('col1', 'a'), ('col2', 'b')], axis=1) 
Out[15]: 
    col1 col2 col3 
     b  a  a b 
0  1  1  1 1 

或跨越一個級別,例如所有a S:

In [16]: df.drop('a', level=1, axis=1) 
Out[16]: 
    col1 col2 col3 
     b  b  b 
0  1  1  1 

在0.14,你也可以通過什麼砸的正則表達式...

還有砸指數/列的整體水平的方式:

+1

這有助於很多,謝謝!我無法在熊貓文檔中找到它。 – user3418530

+0

我實際上是在[重寫這些函數的過程](https://github.com/pydata/pandas/pull/6599),所以會檢查文檔中涵蓋的所有使用方法:)(I直到最近才知道所有的問題!) –