やりたいこと
PythonでCSVを読み込み、読み込んだCSVの行をfor文で回し、
indexの次の番号の変数を作って(現在indexが1なら次のindex 2)とカラム名を指定して代入したいので、df.loc[変数,列名]で出来ないかと思い、実行したところ、次のようなエラーが出ました。(特定の列を次の列のものにずらしたい)。このコードだとindexが5(無いindex)まで指定してしまうのでエラーが出るのかと思い修正しましたが、エラーは消えませんでした。これは一体なんなのか教えていただけたら幸いです。
発生している問題・エラーメッセージ
raise KeyError(key) from err KeyError: 4
該当のソースコード
python(test.py)
1import pandas as pd 2import csv 3 4df = pd.read_csv('test.csv',encoding='utf_8') 5data = [] 6index_next = 0 7 8for index,row in df.iterrows():#1行ずつ呼び出す 9 print("index:",index) 10 index_next = index+1#indexに1を足したもの 11 12 if index_next < len(df.index): 13 print("index_next:",index_next) 14 print("row:",row) 15 16 index_column = df.loc[index_next, "gram"]#今処理している行の次の行のカラム"gram"を抽出したい 17 print(index_column)
test.csv
1name,gram,test 2Akiko,300g,1 3Ken,200g,2 4Taro,500g,3 5Keiko,800g,4
試したこと
index_nextでなく、indexをそのまま入れた場合
index_column = df.loc[index, "gram"]や、
数値をそのまま入れた場合
index_column = df.loc[2, "gram"]はエラーは出ませんでした。
またtypeで型を出すと、indexもindex_nextもint型でした。
補足情報(FW/ツールのバージョンなど)
ライブラリ:pandas,csv
環境:Python3.8.9 MacOS 12.3.1、ターミナルで実行
pythonやpandasを使い始めて間もないため色々理解しきれていませんが、アドバイスいただけると助かります。
回答1件