2016-10-28 6 views
2

これは意味がある場合、いくつかのフィルタリングレベルを持つ大量のデータをリストするデータフレームに苦労しています。だから私のデータはアルファベット順に州名ごとにソートされています。第2のフィルタリングレベルは、郡ごとの母集団データに適用されます。私が使用したフィルタリングはでした。私は現在、州ごとに最高の人口郡数を3つ抽出する必要があり、私はこれをどのように追求するのか迷っています。Pandasを使用してネストされたソート済みデータフレームのnlargestを返す

だから私のデータは、この(私はここで行インデックスを省略)のようなものになります。

State County Population 
Alabama a   100 
Alabama b   50 
Alabama c   40 
Alabama d   5 
Alabama e   1 
... 
Wyoming a.51  180 
Wyoming b.51  150 
Wyoming c.51  56 
Wyoming d.51  5 

は、今私は私のデータフレームから欲しいもの状態につき最高人口郡を取得することです。私の初期の推測は、パンダを使ったことがないとは思えませんでした。このような何か(明らかerronous):

list_l = [] 
for i in df['State'].unique(): #Get a series with every unique state listed once 
    list_l.append(df[(df['State'] == i])).nlargest(3) 
return list_l 

これを入力した場合でも、私はそれが完全に意味がありませんが、私はそれをよりよく説明するのかわからない知っています。誰かが助けることを願っています。

乾杯

+0

申し訳ありませんが、あなたは[ '人口'] 'df.groupby( '国家')の後にある(nlargest 3) '? – EdChum

+0

上記のコードスニペットのインデックスを使用して、メインのdf: 'df.loc [df.groupby( 'State')['Population']にインデックスを戻します。nlargest(3).index.get_level_values(1) – EdChum

+0

こんにちはエド、はい、それは私が何をしています。私はまだパンダを考える方法について頭を悩ましている。 – gaatjeniksaan

答えて

4

私はあなたがnlargestgroupbyが必要だと思う:セカンドレベルから次に

s = df.groupby('State')['Population'].nlargest(3) 
print (s) 
State  
Alabama 0 100 
     1  50 
     2  40 
Wyoming 5 180 
     6 150 
     7  56 
Name: Population, dtype: int64 

get_level_valuesixによって選択:

print (s.index.get_level_values(1)) 
Int64Index([0, 1, 2, 5, 6, 7], dtype='int64') 

print (df.ix[s.index.get_level_values(1)]) 
    State County Population 
0 Alabama  a   100 
1 Alabama  b   50 
2 Alabama  c   40 
5 Wyoming a.51   180 
6 Wyoming b.51   150 
7 Wyoming c.51   56 
+0

ありがとうございます!それはとてもシンプルなようですが、私はこれを数時間かけて苦労しています...私はこのコミュニティが大好きです! – gaatjeniksaan

0

あなたは

0123を使用することができますその後

、あなたは要するに

df.groupby('State').head(3)

を使用することができます。

s = df.sort_values(['State','Population'],ascending=False).groupby('State').head(3) 
+0

はい、これを使用しましたが、データフレームのみをソートします。私は州ごとに最高の3つの集団を抽出する必要があります。私はJezraelsソリューションを実装しており、それは魅力的に機能します。 – gaatjeniksaan

+0

.head(3)がそれを抽出します。 – paulmassimo

関連する問題