[pandas] atメソッドでデフォルトIndexのラベル指定をする際、””はいらない件

はじめに

DataFrameを使っていて、表題のことを解説されているサイトが見つからなかったので、共有します。
デフォルトのIndexラベルを指定する方法です。

基本的なatメソッドの使い方

動作確認用

解説

まずは、適当なDataFrameを準備します。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.arange(12).reshape(3, 4),
                  columns=['col_0', 'col_1', 'col_2', 'col_3'],
                  index=['row_0', 'row_1', 'row_2'])

↓こんなDataFrameが作られます。
スクリーンショット 2020-11-16 18.16.55.png
このDataFrameから、row_1行目のcol_2列目の値を取得する場合は、以下のようにします。

df.at["row_1", "col_2"]
# => 6

ここまでは、基本的なatメソッドの使い方です。

本題

それでは、Indexラベルが指定されていない場合はどうでしょうか。

動作確認用

解説

import pandas as pd
import numpy as np

df = pd.DataFrame(np.arange(12).reshape(3, 4),
                  columns=['col_0', 'col_1', 'col_2', 'col_3'])

↓こんなDataFrameを作ります。
スクリーンショット 2020-11-16 18.23.54.png
Indexラベルがないですね。
(インデックスの名前が、デフォルトの0、1、2となっている)

このDataFrameの1行目、col_2列目の値を取得したい場合はどうすれば良いでしょうか。
実は、以下の書き方で取得できました。

df.at[1, "col_2"]
# => 6

1には””がいらないようです。

df.at["1", "col_2"]
# => エラー!

ちなみに↑こうするとエラーが出るのでご注意下さい。
今までは、iatメソッドやilocメソッドで、インデックス指定するしかないと思っていましたが、デフォルトインデックスでもラベル指定ができるんですね!

さいごに

今回は、atメソッドでデフォルトのIndexラベルを指定する方法を、共有させて頂きました。
最後まで読んで頂いて、ありがとうございます。
何か、ツッコミがあればぜひTwitter等で連絡をお待ちしております。

PON

PON

30代で、完全未経験から独学でWeb系エンジニアになった人。 前職では、超絶ブラック企業にはまり込んでしまい、年間1200時間の残業をしていたが、娘が生まれたことで我に返って転職を決意。 現在は、大阪にあるベンチャー企業の自社開発プロジェクトで、リードエンジニアとして奮闘中。 主戦場はバックエンドで、Pythonでのデータ分析が武器。 とは言いつつ、SPAのフロントエンドを実装したり、インフラ設計したり、スクラム開発でプロジェクト運営したりするなんでも屋。 いつも、ググってきては誰かが書いてくれた記事を見て開発していたが、もらってばかりでなく世の中に返すこともしたいと思い、技術ブログをはじめる。 妻と1歳になる娘の3人暮らし。 最近は一日一食。 何かご用件がある方は、TwitterのDMからどうぞ。