, поэтому я работаю над своим CSV-файлом, в котором после каждого предложения есть пустая ячейка "", как показано на рисунке ниже.
когда я печатаю тип столбцов, используя:
print(data.dtypes)
Я понял, что все они являются объектами, однако я хочу, чтобы столбцы word_id, head_pred_id, sent_id и run_id были int64.
когда я конвертирую тип данных столбца, используя:
data.word_id = data.word_id.astype(int)
Я получаю ошибку: недопустимый литерал для int () с основанием 10: ''
Поэтому я подумал, что проблема заключается в пустых ячейках, поэтому я заменил их в самом файле CSV на NULL.
Теперь тип 4 столбцов автоматически устанавливается на «Float64», однако, когда я что-то выполняю с ними, я получаю ту же ошибку:
ValueError: недопустимый литерал для int () с основанием 10: ''
Я дважды проверил, есть ли пропущенная ячейка, но я не пропустил ни одной, все пустые ячейки в моем файле CSV имеют значение NULL.
Ниже приведен фрагмент кода, где появляется ошибка:
def encode_inputs(sents):
"""
Given a dataframe which is already split to sentences,
encode inputs for rnn classification.
Should return a dictionary of sequences of sample of length maxlen.
"""
word_inputs = []
pred_inputs = []
pos_inputs = []
assert(all([len(set(sent.run_id.values)) == 1
for sent in sents]))
run_id_to_pred = dict([(int(sent.run_id.values[0]),
get_head_pred_word(sent))
for sent in sents]) ***ERROR HERE****
и это переменная "sents", отправленная вышеупомянутой функции
def get_sents_from_df( df):
#Split a data frame by rows accroding to the sentences
return [df[df.run_id == run_id]
for run_id
in sorted(set(df.run_id.values))]