質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

3317閲覧

Python エラーメッセージ「カラム名」not found in axisを解決したい

R-00001

総合スコア1

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/09/04 03:23

編集2021/09/04 04:14

前提・実現したいこと

Pandasでtrain.tsvファイルを読み込み、変数data_trainに入れました。
そのdata_trainから["car name"]カラムをdrop関数で取り除こうとしたところ下記のエラーメッセージが出ました。

なぜこのエラーメッセージが出るのか、原因のご教示お願いします。

発生している問題・エラーメッセージ

["car name"] not found in axis

該当のソースコード

import pandas as pd data_train = pd.read_csv("train.tsv", sep ="\t") data_train = data_train.drop(["car name"], axis=1)

"train.tsv"データ 一部抜粋
id mpg cylinders displacement horsepower weight acceleration model year origin car name
0 29.0 4 135.0 84.00 2525.0 16.0 82 1 dodge aries se
3 31.9 4 89.0 71.00 1925.0 14.0 79 2 vw rabbit custom
9 19.0 6 156.0 108.0 2930.0 15.5 76 3 toyota mark ii
11 28.0 4 90.0 75.00 2125.0 14.5 74 1 dodge colt
13 37.7 4 89.0 62.00 2050.0 17.3 81 3 toyota tercel
16 27.0 4 151.0 90.00 2735.0 18.0 82 1 pontiac phoenix
18 16.0 6 250.0 105.0 3897.0 18.5 75 1 chevroelt chevelle malibu

イメージ説明

試したこと

他の方がされていた同様の質問に「run allですればよい」という回答があり
それで実行したところエラーメッセージは出ませんでした。
(このrun allというのもよくわかってないです。)
またエラーメッセージは出ているのですが、次のセルでprint(data_train.info())で見てみると
data_trainから["car name"]カラムは削除できておりました。その理由もよくわからないです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Daregada

2021/09/04 03:35

「該当のソースコード」に、全体のコードを載せてください。「Pandasでtrain.tsvファイルを読み込み、変数data_trainに入れました」という部分も含めてです。 train.tsvの内容を、長いのであれば先頭数行だけでもいいので、コードブロックに(```だけの行で上下を挟むようにして)書いてください。
R-00001

2021/09/04 03:57

ご指摘ありがとうございます。 初めて故、よくわかってない部分もあり、失礼いたしました。 また情報不備あれば再度修正させて頂きます。
Daregada

2021/09/04 04:07

Pythonのコードをどうやって実行していますか? 「run all」と書いてあることからすると、Jupyter Notebook(またはLab)で、ファイルから読み込む部分と、dropを実行する部分を別々のセルに分けて書いてあるのかな。
R-00001

2021/09/04 04:16

おっしゃる通りで、実行環境はjupyterlabで、セルを分けて書いております。 エラー内容の一部を画像に添付させていただきました。
guest

回答2

0

ベストアンサー

Jupyter Labでは、セル(先頭に[番号]が付いた矩形)に入力した内容を実行すると、その結果は(実行中のカーネルを再起動するまで)保持されます。

ですから、

Python

1data_train = pd.read_csv("train.tsv", sep ="\t")

のセルを実行した直後だと、データフレームdata_trainには「car name」カラムが含まれています。

その後、

Python

1data_train = data_train.drop(["car name"], axis=1)

のセルを実行すると、「car name」カラムを含まないデータフレームが新たに生成され、data_trainはそちらを指すように上書きされます。

なぜこのエラーメッセージが出るのか、原因のご教示お願いします。

おそらく、その後に再度data_train.dropを含むセルを実行したのでしょう。すると、data_trainにはもはや「car name」カラムは含まれていないため、["car name"] not found in axisというエラーが発生します。


他の方がされていた同様の質問に「run allですればよい」という回答があり

それで実行したところエラーメッセージは出ませんでした。
(このrun allというのもよくわかってないです。)

Jupyter Labだと、「Kernel」メニューに「Restart Kernel and Run All Cells...」という項目があります。これを選択すると、カーネル(コードを処理して結果を返すプロセス)が再起動され(いままでの実行結果はなかったことになり)、すべてのセルを順番に実行します。

すると、「car name」カラムを含むデータフレームが再度ファイルから読み込まれ、一度だけ「car name」カラムを取り除く処理が実行されるので、エラーは起きません。

投稿2021/09/04 04:31

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

R-00001

2021/09/04 04:42

ご回答ありがとうございます。 仰る通り「Restart Kernel and Run All Cells...」で実行する場合エラーはおきませんでした。 また data_train_2 = data_train.drop(["car name"], axis =1)と違う変数にいれて処理をした場合も エラーがおきなかったので、ご回答の通り上書きされたてcar nameが削除されたデータから再度car nameを削除しようとしたため、エラーがおこったように見受けられます。 質問の仕方含め、詳細なご回答ありがとうございました!
guest

0

またエラーメッセージは出ているのですが、次のセルでprint(data_train.info())で見てみると

data_trainから["car name"]カラムは削除できておりました。その理由もよくわからないです。

実行環境はjupyterでしょうか?もしかして同じコードを2回以上実行していませんか?一度dropしたデータフレームにたいして再度dropしようとすると当然エラーになります。

投稿2021/09/04 04:01

meg_

総合スコア10580

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

R-00001

2021/09/04 04:15

実行環境はjupyterlabです。 コピペがうまくいかなかったので、エラー内容を画像にして添付させていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問