此错误表示“ IndexError:索引0超出尺寸0的轴0的范围”是什么意思?

时间:2019-05-29 11:32:13

标签: python pandas sqlite

我正在跟踪培训聊天机器人的教程。但是,我不断收到此错误,我不知道这意味着什么, 第16行,在     last_unix = df.tail(1)['unix']。values [0] IndexError:索引0超出了大小为0的轴0的范围

下面是我的代码。第16行是 last_unix = df.tail(1)['unix']。values [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 个答案:

答案 0 :(得分:1)

这只是意味着您在运行此df.tail(1)['unix'].values[0]时没有返回任何数据。
它提供了一个空的numpy数组,因此在第一个位置或第0个索引处没有任何内容。
pd.read_sql行之后的操作是-

  • print(df.shape)来查看查询返回的行数和列数。
  • print(df.tail(1)['unix'])来查看数据框最后一行的unix列,并检查其是否具有任何值。