我正在跟踪培训聊天机器人的教程。但是,我不断收到此错误,我不知道这意味着什么, 第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)
但这没做
我应该完成行数。
答案 0 :(得分:1)
这只是意味着您在运行此df.tail(1)['unix'].values[0]
时没有返回任何数据。
它提供了一个空的numpy数组,因此在第一个位置或第0个索引处没有任何内容。
pd.read_sql
行之后的操作是-
print(df.shape)
来查看查询返回的行数和列数。print(df.tail(1)['unix'])
来查看数据框最后一行的unix
列,并检查其是否具有任何值。