Невозможно преобразовать объект в np.int64 с помощью Numpy - PullRequest
0 голосов
/ 02 марта 2019

У меня есть фрейм данных с 3 столбцами со следующими dtypes:

df.info()
tconst       object
directors    object
writers      object

Пожалуйста, посмотрите сами данные:

enter image description here

Теперь я должен изменить столбец tconst на dtype: int64.Я пробовал этот код, но он выдает ошибку:

df = pd.read_csv('title.crew.tsv',
                   header=None,sep='\t', 
                   encoding= 'latin1',
                   names = ['tconst', 'directors','writers'], 
                   dtype={'tconst': np.int64,'directors':np.int64})

Ошибка 1: Ошибка: недопустимый литерал для int () с основанием 10: 'tconst'
Ошибка: Ошибка типа: Невозможно привести массивот dtype ('O') к dtype ('int64') согласно правилу 'safe'

Что здесь не так?

1 Ответ

0 голосов
/ 02 марта 2019

По моему мнению, проблема здесь в параметре header=None, который используется для чтения file без заголовка csv.

Решение состоит в том, чтобы удалить его, поскольку в файле находится заголовок первой строки, который передаетсядля имен столбцов DataFrame:

df = pd.read_csv('title.crew.tsv',
                   sep='\t', 
                   encoding= 'latin1')

Другая проблема заключается в префиксе tt и nm в столбцах, поэтому не может быть преобразована в целые числа.

Решение:

df['tconst'] = df['tconst'].str[2:].astype(int)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...