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
は スカラ値(単一の要素)だけを返します。.loc
で df.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の使い方についてでした。
最後までお読みいただき、ありがとうございました。