パンダではgroupby
,nlargest
、sum
の機能を併用しようとしていますが、問題があります。パンダスグループ最高額合計
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
私は人口でトップ2郡を取得し、その後、状態によって選択することがgroupby
を使用したいです。その後、その州の合計を得るために、上位3つの郡の人口番号のみを使用します。
最後に、州と人口(その上位2郡)のリストを作成します。
私はgroupby
とnlargest
を動作させることができますが、nlargest(2)
の合計が問題になります。私はあなたが持っているこの問題はdf.groupby('State')['Population'].nlargest(2)
は、データフレームを返すことだと思います
df.groupby('State')['Population'].apply(lambda grp: grp.nlargest(2).sum())
、:
私が今持っているラインは単純です:df.groupby('State')['Population'].nlargest(2)
あなたは 'df.groupby(「国家」)[「人口」]を使用して、適用を取り除くことによって、これを修正する必要があります。nlargest(2) .sum(level = 0) ' –
@cᴏʟᴅsᴘᴇᴇᴅ:' .nlargest(2).sum(level = 0) 'のあなたの提案された解決策は、データフレームサイズがかなりの場合に' apply'を使うよりも実際に遅くなります。 'sum'の' level' kwargは、フードの下で2回目のgroupby操作を実行します。これは余分なオーバーヘッドがどこから来るのかと推測しています。 – root
それは驚くべきことです。したがって、1つのgroupby +適用は2つのグループを優先します。新しい何かを学んだ、歓声! –