"NameError: имя 'int64' не определено" - PullRequest
1 голос
/ 11 июля 2019

Я относительно новичок в пандах и при попытке определить dtypes для чтения большого файла я получаю следующую ошибку: NameError: name 'int64' is not defined.

Я убедился, что pandas и numpy установлены и обновлены, но насколько я понимаю, это ошибка Python. Я прошел несколько уроков, где ни у кого не было этой проблемы. См. Код ниже, возвращающий ошибку:

import pandas as pd
import numpy as np

data = pd.read_csv("file.csv", encoding="utf-16le", dtype={
    "time": int64,
    "created_date_sk": int64,
    "eventType": object,
    "itemId": int64,
    "fieldId": int64,
    "userId": int64
})

data.head()

Полный след:

Traceback (последний вызов был последним): файл "manageulate.py", строка 5, в модуль "time": int64, NameError: имя 'int64' не определено

Я ожидал бы, что тип int64 будет распознан, но он только может читать тип int. Тип объекта, кажется, работает.

Ответы [ 4 ]

1 голос
/ 11 июля 2019

Просто используйте int. pandas dtype int64 отображается на python int.

import pandas as pd
import numpy as np

data = pd.read_csv("file.csv", encoding="utf-16le", dtype={
    "time": int,
    "created_date_sk": int,
    "eventType": object,
    "itemId": int,
    "fieldId": int,
    "userId": int
})

data.head()
1 голос
/ 11 июля 2019

Интерпретатор сообщает, что он не распознан, потому что int64 принадлежит numpy.

Измените свой код на этот (он жалуется на отсутствие file.csv в моей файловой системе, но это нормально):

import pandas as pd
import numpy as np

data = pd.read_csv("file.csv", encoding="utf-16le", dtype={
    "time": np.int64,
    "created_date_sk": np.int64,
    "eventType": object,
    "itemId": np.int64,
    "fieldId": np.int64,
    "userId": np.int64
})

data.head()

Или еще лучше, импортируйте его в начале:

from numpy import int64
0 голосов
/ 11 июля 2019

Причина, по которой вы получаете эту ошибку, заключается в том, что int64 не определено в локальном пространстве имен python. поэтому использование его в словаре приводит к ошибке. Есть несколько вещей, которые вы можете сделать, чтобы это исправить.

Вариант 1: использовать строки

Самый простой вариант - заключить ваши типы данных в строки. просто измените int64 на "int64" в вашем словаре dtype.

Вариант 2: Использование numpy

Измените int64 на np.int64. (обратите внимание, что для этого потребуется импортировать пакет numpy.

Мне нравится вариант 2.

0 голосов
/ 11 июля 2019

Вы передаете int64 как переменную, Вы должны передать ее как строку, Используйте код, указанный ниже: -

import pandas as pd
import numpy as np

data = pd.read_csv("file.csv", encoding="utf-16le", dtype={
"time": 'int64',
"created_date_sk": 'int64',
"eventType": 'object',
"itemId": 'int64',
"fieldId": 'int64',
"userId": 'int64'
})

data.head()

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...