Что означает эта ошибка: «IndexError: индекс 0 выходит за границы оси 0 с размером 0»? - PullRequest
0 голосов
/ 29 мая 2019

Я следую инструкциям по обучению чат-бота. Тем не менее, я продолжаю получать эту ошибку, и я не знаю, что это значит, строка 16, в last_unix = df.tail (1) ['unix']. values ​​[0] IndexError: индекс 0 выходит за пределы оси 0 с размером 0

Ниже мой код. строка 16: last_unix = df.tail (1) ['unix']. значения [0]

import sqlite3
import pandas as pd

timeframes = ['2015-01']

for timeframe in timeframes:
    connection = sqlite3.connect('/Users/danieldossantos/Desktop/Faisnet/RC_{}.db'.format(timeframe))
    c = connection.cursor()
    limit = 5000
    last_unix = 0
    cur_length = limit
    counter = 0
    test_done = False
    while cur_length == limit:
        df = pd.read_sql("SELECT * FROM parent_reply WHERE unix > {} AND parent NOT NULL AND score > 0 ORDER BY unix ASC LIMIT {}".format(last_unix, limit), connection)
        last_unix = df.tail(1)['unix'].values[0]
        cur_length = len(df)
        if not test_done:
            with open("test.from", 'a', encoding='utf8') as f:
                for content in df['parent'].values:
                    f.write(content+'\n')
            with open("test.to", 'a', encoding='utf8') as f:
                for content in df['comment'].values:
                    f.write(content+'\n')
            test_done = True

        else:
            with open("train.from", 'a', encoding='utf8') as f:
                for content in df['parent'].values:
                    f.write(content+'\n')
            with open("train.to", 'a', encoding='utf8') as f:
                for content in df['comment'].values:
                    f.write(content+'\n')

        counter += 1
        if counter % 20 == 0:
            print(counter*limit, 'rows completed so far')

Я пытался добавить

df = pd.read_sql(
            "SELECT * FROM parent_reply WHERE unix > {} AND parent NOT NULL AND parent != 'False' AND score > 0 ORDER BY unix ASC LIMIT {}".format( last_unix, limit), connection)

Но это ничего не сделало

Я должен получить количество завершенных строк.

1 Ответ

1 голос
/ 29 мая 2019

Это просто означает, что при запуске этого df.tail(1)['unix'].values[0].
данные не возвращаются. Он дает пустой массив с нулевыми значениями, поэтому в первой позиции или 0-м индексе ничего нет.
Что вы можете сделать послеpd.read_sql строка - -

  • print(df.shape) для просмотра количества строк и столбцов, возвращаемых запросом.
  • print(df.tail(1)['unix']) для просмотра столбца unix последнегострока кадра данных и проверьте, имеет ли оно какое-либо значение.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...