たとえば次のCSVをpandas.DataFrameとして読み込み、
CSV
1name, age 2Hadiya Haines, 20 3Ezekiel Hawes, 21 4Bartlomiej Cano, 22 5Yvie Mcfarlane, 23 6Wyatt Robin, 24 7Faris Hammond, 25 8Esmee Easton, 26 9Summer-Louise Oakley, 27 10Sanjay Lin, 28 11Elyse Fisher, 29
このPythonスクリプトを実行すると
Python
1import pandas as pd 2 3path_csv = "test.csv" 4df = pd.read_csv(path_csv) 5 6df["sex"] = -1 7for index in df.index: 8 if ( 9 df["name"][index] == "Sanjay Lin" 10 and df["age"][index] == 28 # ここでエラーになる。"age"という列はあるのになぜ? 11 and df["sex"][index] == -1 12 ): 13 print(df.iloc[index, :])
このようなエラーがでてしまいます。
bash
1Traceback (most recent call last): 2 File "/Users/ユーザー名/.pyenv/versions/anaconda3-5.3.1/lib/python3.6/site-packages/pandas/core/indexes/base.py", line 2897, in get_loc 3 return self._engine.get_loc(key) 4 File "pandas/_libs/index.pyx", line 107, in pandas._libs.index.IndexEngine.get_loc 5 File "pandas/_libs/index.pyx", line 131, in pandas._libs.index.IndexEngine.get_loc 6 File "pandas/_libs/hashtable_class_helper.pxi", line 1607, in pandas._libs.hashtable.PyObjectHashTable.get_item 7 File "pandas/_libs/hashtable_class_helper.pxi", line 1614, in pandas._libs.hashtable.PyObjectHashTable.get_item 8KeyError: 'age' 9 10During handling of the above exception, another exception occurred: 11 12Traceback (most recent call last): 13 File "/Users/ユーザー名/test.py", line 11, in <module> 14 and df["age"][index] == 28 15 File "/Users/ユーザー名/.pyenv/versions/anaconda3-5.3.1/lib/python3.6/site-packages/pandas/core/frame.py", line 2995, in __getitem__ 16 indexer = self.columns.get_loc(key) 17 File "/Users/ユーザー名/.pyenv/versions/anaconda3-5.3.1/lib/python3.6/site-packages/pandas/core/indexes/base.py", line 2899, in get_loc 18 return self._engine.get_loc(self._maybe_cast_indexer(key)) 19 File "pandas/_libs/index.pyx", line 107, in pandas._libs.index.IndexEngine.get_loc 20 File "pandas/_libs/index.pyx", line 131, in pandas._libs.index.IndexEngine.get_loc 21 File "pandas/_libs/hashtable_class_helper.pxi", line 1607, in pandas._libs.hashtable.PyObjectHashTable.get_item 22 File "pandas/_libs/hashtable_class_helper.pxi", line 1614, in pandas._libs.hashtable.PyObjectHashTable.get_item 23KeyError: 'age'
"age"という列はあるのに、なぜKeyErrorが出るのでしょうか? 何か間違っていることをしていると思いますか?
Python
1and df["age"][index] == 28 # ここでエラーになる。"age"という列はあるのになぜ?
この行をコメントアウトするとエラーは出ません。というよりif
の条件にdf["age"][index] == 28
が含まれるとエラーになることがわかりました。
よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/10 10:40