#python #pandas #numpy
#python #панды #numpy
Вопрос:
У меня есть следующий код:
import numpy as np
class EM(object):
# Initialization
def __init__(self, X, k=2):
X = np.asarray(X)
self.data = X.copy()
# number of clusters
self.k = k
# randomly assign data to the clusters
self.data['label'] = map(lambda x: x 1, np.random.choice(self.k, len(self.data))) # gives the error
где X изначально является a pd.Dataframe
с формой (19 182,5). Запуск кода выдает следующую ошибку:
Ошибка индекса: допустимыми индексами являются только целые числа, срезы (:), многоточие (…), numpy.newaxis (нет) и целочисленные или логические массивы
Как я могу записать новый столбец в self.data
. Чем это отличается от добавления / записи / работы с объектом данных вне класса?
Ответ №1:
self.data
это больше НЕ dataframe, это массив numpy. Вы можете видеть это, поскольку вы привели X в массив с np.asarray
помощью . Ошибка IndexError возникает, поскольку вы не можете назначить ему, как вы бы назначили dataframe.