2016-07-24 44 views
1

如何分割以下df,使第二級!= 2。MultiIndex/Advanced Indexing其中一個級別不是(!=)一個值

在我的真實世界的情況下,我的第二級是日期範圍,我希望能夠選擇除一個日期以外的所有東西。

MultiIndex/Advanced Indexing

In [1]: arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'], 
       ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']] 
In [2]: tuples = list(zip(*arrays)) 
In [4]: index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second']) 
In [16]: df = pd.DataFrame(np.random.randn(3, 8), index=['A', 'B', 'C'], columns=index) 
In [38]: df = df.T 

In [65]: df 
Out[65]: 
        A   B   C 
first second        
bar one  0.895717 0.410835 -1.413681 
     two  0.805244 0.813850 1.607920 
baz one -1.206412 0.132003 1.024180 
     two  2.565646 -0.827317 0.569605 
foo one  1.431256 -0.076467 0.875906 
     two  1.340309 -1.187678 -2.211372 
qux one -1.170299 1.130127 0.974466 
     two -0.226169 -1.436737 -2.006747 

In [66]: df.xs('one', level='second') 
Out[66]: 
       A   B   C 
first        
bar 0.895717 0.410835 -1.413681 
baz -1.206412 0.132003 1.024180 
foo 1.431256 -0.076467 0.875906 
qux -1.170299 1.130127 0.974466 

我很驚訝的是,文件@ pandas.pydata.org這麼差。沒有任何解釋的例子。它的文檔是由專家爲那些已經熟悉熊貓所有功能的人撰寫的。

爲什麼文檔不提供代碼來重新生成示例?

+0

如果你要使用熊貓的高級功能,而不在/學習基礎知識教育的正,你會發現難以閱讀的文檔。文檔是漸進的。他們不重複基本知識。 – Merlin

+0

你能指點我一個很好的資源/教程來學習基礎知識嗎?我一直在瀏覽Wes.M和其他人的Youtube研討會以及文檔等各種資源。但是,我還沒有找到一個真正的好來源來學習一個堅實的基礎。 – codingknob

+0

https://people.duke.edu/~ccc14/sta-663/UsingPandas.html我真的很喜歡這裏的工作,節奏很快。擊中關鍵亮點 – Merlin

回答

2

與此開始:

    A   B   C 
first second        
bar one -0.350640 -1.761671 0.253923 
     two -0.036557 0.212322 0.537106 
baz one -1.597584 -0.301356 -0.634428 
     two  2.340900 -0.356272 -0.985386 
foo one  0.122753 -0.333827 -0.620175 
     two  0.423211 -0.570563 -1.245026 
qux one -0.972814 -0.878836 -1.030892 
     two  0.312855 -0.191677 0.700006 


df.iloc[df.index.get_level_values('second') != 'one' ] 

        A   B   C 
first second        
bar two -0.036557 0.212322 0.537106 
baz two  2.340900 -0.356272 -0.985386 
foo two  0.423211 -0.570563 -1.245026 
qux two  0.312855 -0.191677 0.700006 


df.iloc[df.index.get_level_values('second') != 'two' ] 
        A   B   C 
first second        
bar one -0.350640 -1.761671 0.253923 
baz one -1.597584 -0.301356 -0.634428 
foo one  0.122753 -0.333827 -0.620175 
qux one -0.972814 -0.878836 -1.030892 
相關問題