2017-03-12 9 views
3

pandas multiindexを使用したDataframeどのように注文でフィルタリングできますか?

 2 3 
0 1  
1 A 9 9 
2 H 7 7 

又は第

 2 3 
0 1  
1 D 4 5 
をフィルタリングするフィルタリング、すなわち、Iはマルチインデックスのレベル1のn番目の位置の行をフィルタリングする次のデータフレーム

>>> import pandas as pd 
>>> L = [(1,'A',9,9), (1,'C',8,8), (1,'D',4,5),(2,'H',7,7),(2,'L',5,5)] 
>>> df = pd.DataFrame.from_records(L).set_index([0,1]) 
>>> df 
    2 3 
0 1  
1 A 9 9 
    C 8 8 
    D 4 5 
2 H 7 7 
    L 5 5 

を想定

どうすればいいですか?

答えて

5

マルチインデックスDFの最初のレベルでグループ化を実行した後、GroupBy.nthの助けを借りて行をフィルタリングできます。 nは0ベースのインデックス手法を次ので示すように、あなたはそれに適切な値を提供する必要があります

df.groupby(level=0, as_index=False).nth(0) 

enter image description here

2:

1)level=0ごとにグループ化された最初の行を選択します

df.groupby(level=0, as_index=False).nth(2) 

:)level=0ごとにグループ化された第三の行を選択します

+0

これは本当にすっきりした解決策です。 –

+1

パーフェクト!どうもありがとう。 – user2123288

関連する問題