2016-12-11 13 views
1

私はマルチレベルインデックスフレームを持っています。それはここでデータフレームに2つ以上のエントリがある場合、どのようにインデックスを選択できますか?

よう
actor    title_year sum count 
50 Cent    2005.0 30981850.0 1 
A.J. Buckley   2015.0 123070338.0 1 
Aaliyah    2002.0 30307804.0 1 
Aasif Mandvi   2008.0 13214030.0 1 
Abbie Cornish   2009.0 4440055.0 1 

actortitle_year形マルチインデックスに見えます。どのようにしてactorn年を超えるmulti_indexのエントリをスライスできますか?

答えて

0

は、私はあなたがfilterが必要だと思う:

print (df) 
            sum count 
actor   title_year      
50 Cent  2005.0  30981850.0  1 
       2006.0  30981850.0  1 
       2007.0  30981850.0  1 
A.J. Buckley 2015.0  123070338.0  1 
Aaliyah  2002.0  30307804.0  1 
       2002.0  30307804.0  1 
       2004.0  30307804.0  1 
Aasif Mandvi 2008.0  13214030.0  1 
Abbie Cornish 2009.0  4440055.0  1 

ですべてactor Sを取り外す必要がある場合はlengthより2として:レベルtitle_yearに一意の値のlengthですべてactor Sを取り外す必要がある場合は

df1 = df.groupby(level='actor').filter(lambda x: len(x) < 3) 
print (df1) 
            sum count 
actor   title_year      
A.J. Buckley 2015.0  123070338.0  1 
Aasif Mandvi 2008.0  13214030.0  1 
Abbie Cornish 2009.0  4440055.0  1 

2

df2 = df.groupby(level='actor') 
     .filter(lambda x: x.index.get_level_values('title_year').nunique() < 3) 
print (df2) 
            sum count 
actor   title_year      
A.J. Buckley 2015.0  123070338.0  1 
Aaliyah  2002.0  30307804.0  1 
       2002.0  30307804.0  1 
       2004.0  30307804.0  1 
Aasif Mandvi 2008.0  13214030.0  1 
Abbie Cornish 2009.0  4440055.0  1 
関連する問題