勉強中の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に関する記事も不定期で投稿していますので、是非併せてご覧ください!




コメント