[解決済み】pandas groupby グループ内ソート
2022-04-01 09:19:05
質問
データフレームを2つの列でグループ化し、グループ内で集計結果を並べ替えたいのですが、可能ですか?
In [167]: df
Out[167]:
count job source
0 2 sales A
1 4 sales B
2 6 sales C
3 3 sales D
4 7 sales E
5 5 market A
6 3 market B
7 2 market C
8 4 market D
9 1 market E
In [168]: df.groupby(['job','source']).agg({'count':sum})
Out[168]:
count
job source
market A 5
B 3
C 2
D 4
E 1
sales A 2
B 4
C 6
D 3
E 7
次に、各グループ内で count 列を降順に並べ替えたいと思います。そして、上位3行だけを取り出します。次のようになります。
count
job source
market A 5
D 4
B 3
sales E 7
C 6
B 4
解決方法は?
あなたがやりたいことは、実はもう一度(最初のgroupbyの結果に対して)groupbyを行うことです:ソートして、グループごとに最初の3つの要素を取ります。
最初のgroupbyの結果から始めます。
In [60]: df_agg = df.groupby(['job','source']).agg({'count':sum})
インデックスの第一階層でグループ分けをしています。
In [63]: g = df_agg['count'].groupby('job', group_keys=False)
そして、各グループをソート('order')して、最初の3つの要素を取り出したいと思います。
In [64]: res = g.apply(lambda x: x.sort_values(ascending=False).head(3))
しかし、これについては、ショートカット機能があります。
nlargest
:
In [65]: g.nlargest(3)
Out[65]:
job source
market A 5
D 4
B 3
sales E 7
C 6
B 4
dtype: int64
だから、一挙にこのように見えるのです。
df_agg['count'].groupby('job', group_keys=False).nlargest(3)
関連
-
python string splicing.join()とsplitting.split()の説明
-
PythonによるExcelファイルの一括操作の説明
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] Pandasのカラム名のリネーム
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] Pandas DataFrameからカラムを削除する
-
[解決済み] Pandasのデータフレームで複数の列を選択する
-
[解決済み] groupbyでグループ内の最大値を持つ行を取得する。
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
Python関数の高度な応用を解説
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み】ValueError: xとyは同じサイズでなければならない
-
[解決済み] PandasのGroupByの出力をSeriesからDataFrameに変換する