勉強中のpandasのloc
でcolumsを指定した際にエラーが出て焦ったので対処法を備忘録も兼ねて残しておきます。
原因と対処法
以下のデータフレームからloc
を使ってデータを取得します。
import pandas as pd
df = pd.DataFrame(
[
["ID001", "ヤマダ"],
["ID002", "タナカ"],
["ID003", "スズキ"],
],
index=["1件目", "2件目","3件目"],
columns=["ID", "名前"])
ID 名前
1件目 ID001 ヤマダ
2件目 ID002 タナカ
3件目 ID003 スズキ
試しに「名前」列のみ取得してみます。
df.loc[["名前"]]
ところが上記コードを実行してみた所、以下のエラーが発生してしまいました。
KeyError: "None of [Index(['名前'], dtype='object')] are in the [index]"
要約すると「インデックス名の中に「名前」っていうインデックス名はないよ」とのことで、この書き方だと列名でなくインデックス名の方を探しに行ってしまっているみたいです。
#こっちならいける
df.loc[["1件目"]]
ID 名前
1件目 ID001 ヤマダ
どうやら列名を指定する場合はdf.loc[:,["【列名】"]]
のように列名の前にコロンとカンマを付けないとダメみたいです。
#["名前"]の前に「:,」を付ける
df.loc[:,["名前"]]
こうすることで「名前」列のみ取得することができました。
名前
1件目 ヤマダ
2件目 タナカ
3件目 スズキ
まとめ
今回はpandasのloc
でcolumsを指定した際にエラーが出た時の対処法を紹介しました。
このブログではExcel・PCに関する記事も不定期で投稿していますので、是非併せてご覧ください!
コメント