私はPandasとFlaskのプロジェクトで作業していますが、次のような奇妙なエラーが発生します:IndexError:立入禁止で。しかし、エラー自体は奇妙なものではなく、奇妙なことはどのように発生しているかです。私は、ページの1つがajax呼び出しを行うフォームであるフラスコアプリを持っています。ユーザーが書籍のタイトルを入力し、その書籍の平均評価が返されます。私が 'それ'を入力すると評価が返されます。すべてうまく動作します。私が入力した場合しかし、列車の女の子が、私は次のエラーを取得する:私は私のパンダのコードに同じタイトルで入力した場合Pandasのilocで奇妙なエラーが発生しました:IndexError:単一の位置インデクサーが範囲外です
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/flask/app.py", line 1994, in __call__
return self.wsgi_app(environ, start_response)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/flask/app.py", line 1985, in wsgi_app
response = self.handle_exception(e)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/flask/app.py", line 1540, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/flask/app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/mikecuddy/Desktop/Coding/Python/book_ratings/app.py", line 75, in book_look_up
rating = book.book_rating(title)
File "/Users/mikecuddy/Desktop/Coding/Python/book_ratings/books.py", line 17, in book_rating
rating = info.iloc[0][12]
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pandas/core/indexing.py", line 1296, in __getitem__
return self._getitem_axis(key, axis=0)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pandas/core/indexing.py", line 1612, in _getitem_axis
self._is_valid_integer(key, axis)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pandas/core/indexing.py", line 1526, in _is_valid_integer
raise IndexError("single positional indexer is out-of-bounds")
IndexError: single positional indexer is out-of-bounds
しかし、私は評価を得ます!私は私のパンダのコードがうまく動作することを知っています。私はまた、それのような1つの単語を持つタイトルを持つどんな本もうまくいくと言うでしょう。私のエラーが発生するのはタイトルの複数の単語だけです。私はこの問題を追跡しましたが、それ以上は得られません。今私のコード:
HTMLコード
<form class='title_lookUp_div' id='book_look_up_form'>
<label>Book Title: </label><input id='title' name='title' type='text'>
<p>Result: <span id='result'>?</span></p>
<button>Submit</button>
</form>
JS/AJAXコール:
$(document).ready(function(){
$('#book_look_up_form').bind('submit', function(event){
event.preventDefault();
$.ajax({
data: {
title: $('#title').val()
},
type: 'POST',
url: '/book_look_up',
success: function(data){
$('#result').text(data.result).show();
}
});
});
});
パンダコード:
def book_rating(self, title):
#Gettting the row of data for the title that the user entered.
info = self.__data[self.__data.original_title == title]
rating = info.iloc[0][12]
return rating
app.pyコード:
@app.route('/book_look_up',methods=['POST'])
def book_look_up():
#Recieving the data from the ajax call
title = request.form['title']
#The data in the CSV file has the first letter of each word capitalized
title = title.title()
#Creating the object that will deal with the data from CSV file.
book = Books()
rating = book.book_rating(title)
if title:
return jsonify(result = rating)
return jsonify({'error' : 'Missing Data'})
私が言ったように、パンダのコードはうまく動作し、app.pyとajaxの呼び出しは正常に動作しています。データに複数の単語が含まれていて、すべてがクラッシュし、エラーメッセージの上に表示されたときだけです。どんな助けも素晴らしいだろう!ありがとうございました!
パンダコードがクラッシュしたときの 'info'の値は何ですか? – Keith
遅れて申し訳ありません。infoの値は次のとおりです:空のDataFrame。しかし、私は間違いなく、エラーが私のものだと確信しています。何が入力されたのかは、CSVファイルのものとまったく同じものでなければなりません。だから、私は.title()メソッドを使って、The Girl on the TrainをThe Train上のGirlに変えました。マッチを得るためのより良い方法を見つけなければならない! –
したがって、私は自分のエラーがcsvファイルにあるものと一致するようにユーザー入力を取得することに気付いています。 –