Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python Pandas – 列の最大値を見つけて、対応する行の値を返す方法


PandasのDataFrameで特定の列の最大値を見つけ、その最大値に対応する行全体の値を取得するには、df.loc[df[col].idxmax()]を使用します。idxmax()は最大値が含まれる行のインデックスを返し、それをdf.loc[]に渡すことで該当する行をSeriesとして取得できます。具体的な例で確認してみましょう。

手順

  • 2次元でサイズ変更可能な表形式データ(DataFrame)dfを作成します。
  • 入力DataFrame dfを出力して内容を確認します。
  • 最大値を求めたい列名を変数colに設定します。
  • df.loc[df[col].idxmax()]を使って、最大値とその対応する行を取得します。
  • 手順4の出力結果を表示します。

サンプルコード

import pandas as pd

df = pd.DataFrame(
    {
        "x": [5, 2, 7, 0],
        "y": [4, 7, 5, 1],
        "z": [9, 3, 5, 1]
    }
)
print("入力DataFrame:\n", df)

col = "x"
max_x = df.loc[df[col].idxmax()]
print("列 ", col, " の最大値と、その行の値:\n", max_x)

col = "y"
max_x = df.loc[df[col].idxmax()]
print("列 ", col, " の最大値と、その行の値:\n", max_x)

col = "z"
max_x = df.loc[df[col].idxmax()]
print("列 ", col, " の最大値と、その行の値:\n", max_x)

出力結果

入力DataFrame:
   x  y  z
0  5  4  9
1  2  7  3
2  7  5  5
3  0  1  1

列 x の最大値と、その行の値:
x    7
y    5
z    5
Name: 2, dtype: int64

列 y の最大値と、その行の値:
x    2
y    7
z    3
Name: 1, dtype: int64

列 z の最大値と、その行の値:
x    5
y    4
z    9
Name: 0, dtype: int64

ポイント解説

idxmax()は指定した列の中で最大値を持つ行のインデックス(ラベル)を返します。この戻り値をdf.loc[]に渡すことで、最大値が存在する行全体をSeriesとして取得でき、他の列の値も同時に確認できます。なお、同率の最大値が複数存在する場合は、最初に現れた行が返される点に注意してください。また、上位N件の行を取得したい場合はdf.nlargest()メソッドも便利です。


  1. 行と列の最大値が指定されている場合にPythonで元の行列を復元する方法

    問題の概要サイズNの配列AとサイズMの配列B、さらにN×Mの2値行列が与えられているとします。この2値行列では、「1」は元の行列の対応する位置に正の整数が存在していたことを示し、「0」はその位置が元の行列でも0であったことを示します。私たちの課題は、A[i]がi行目の最大要素となり、B[j]がj列目の最大要素となるような元の行列を復元することです。例えば、入力が A = [4, 2, 3]、B = [3, 1, 0, 0, 4, 0, 5] の場合、復元される行列は以下の出力例のようになります。解法のアプローチこの問題を解くためには、以下の手順に従います。N を配列AのサイズとしますM を配列

  2. PythonでPandasのバージョンと依存関係を確認する方法

    Pandas(パンダス)は、Pythonにおけるデータ分析に欠かせない重要なライブラリです。Pandasには複数のバージョンが存在し、バージョンの不一致によって予期しないエラーや動作の問題が発生することがあります。そのため、トラブルシューティングや環境構築の際には、インストールされているPandasの正確なバージョン番号を把握しておくことが非常に重要です。ここでは、Pandasのバージョンを簡単に確認できる2つの方法を紹介します。__version__属性でバージョンを確認する最もシンプルな方法は、pandas.__version__属性を使うことです。以下のコマンドを実行するだけで、現在イン