グループ毎に任意の列で最大値を持つ行をピックアップ

Get column value corresponding to the idxmax from another column per group – StackOverflow

import pandas as pd
import io


strings = """Index    Max_Mass (kg/m)    Max_Diameter (m)
1             10                   1
2             20                   2
3             30                   3

200           5                    4
201           60                   3
202           20                   2

300           90                   1
301           3                    1
302           10                   1

400           100                  1
401           10                   1
402           10                   1"""
df = pd.read_csv(io.StringIO(strings), sep='\s{2,}', engine='python')
print(df)

ridx = df.groupby(df['Index'].floordiv(100))['Max_Mass (kg/m)'].idxmax().values
print(df.iloc[ridx, :])
    Index  Max_Mass (kg/m)  Max_Diameter (m)
0       1               10                 1
1       2               20                 2
2       3               30                 3
3     200                5                 4
4     201               60                 3
5     202               20                 2
6     300               90                 1
7     301                3                 1
8     302               10                 1
9     400              100                 1
10    401               10                 1
11    402               10                 1
   Index  Max_Mass (kg/m)  Max_Diameter (m)
2      3               30                 3
4    201               60                 3
6    300               90                 1
9    400              100                 1
広告
カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください