PythonのPandasのatの使い方について

Python,イメージ

AI実装検定のご案内

Pandasの.atは、「特定の1つのセル(行 × 列)」に高速にアクセスするためのメソッドです。

用途としては、単一のスカラ値を取得または更新したいときに使われます。

似たものに.iat.loc.ilocがありますが、それぞれ用途が少し異なります。

以下で詳しく解説します。

目次

基本的な書式

DataFrame.at[行ラベル, 列ラベル]
  • 行ラベル列ラベルで指定する必要があります。
  • インデックス番号ではなく、ラベル名でのアクセスが必須です。

使用例

値の取得

import pandas as pd

df = pd.DataFrame({
    "A": [10, 20, 30],
    "B": [100, 200, 300]
}, index=["x", "y", "z"])

# y行・B列の値を取得
print(df.at["y", "B"])  # 出力: 200

.atスカラ値(単一の要素)だけを返します。
.locdf.loc["y", "B"] と書いた場合も同じ結果ですが、.atより高速です。

値の更新

# z行・A列の値を更新
df.at["z", "A"] = 999
print(df)

.atと他のインデクサの違い

メソッド指定方法返り値特徴
.at行ラベル+列ラベルスカラ高速・単一要素専用
.iat行番号+列番号(整数)スカラ高速・単一要素専用
.loc行ラベル+列ラベルSeries / DataFrame / スカラ範囲や複数指定も可
.iloc行番号+列番号(整数)Series / DataFrame / スカラ範囲や複数指定も可

# at → ラベル指定
df.at["y", "A"]

# iat → 数値位置指定
df.iat[1, 0]

# loc → 複数要素の取得もできる
df.loc["x":"y", "A"]

# iloc → 範囲で位置指定
df.iloc[0:2, 0]

.atを使う場面

  • 単一のセルにアクセスしたいとき(速度重視)
  • .locよりも速く、かつシンプルに書ける
  • データ更新処理が多い場合にも有効

特に大きなDataFrameでは.locより高速に動作するため、ループ処理などで使うと効率的です。

注意点

  • 必ず存在する行・列ラベルを指定する必要がある
    存在しないラベルを指定すると KeyError が発生します。
  • 複数要素には使えない
    複数行や複数列を指定したい場合は.locを使う必要があります。

まとめ

  • .atは「行ラベル+列ラベル」で単一セルにアクセス
  • .iatは「行番号+列番号」で単一セルにアクセス
  • 複数範囲なら.loc / .ilocを使用

以上、PythonのPandasのatの使い方についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次