Список быстрого кодирования строк: ошибка с плавающей точкой не повторяется? - PullRequest
0 голосов
/ 12 июля 2020

Я создал функцию для ручного однократного кодирования для списка идентификаторов продуктов:

Столбец данных:

dfrfm['IDHotel']

0         1075
1           43
2         2130
3           43
4           43
          ... 
335549    9376
335550    8250
335551    9235
335552    8250
335553    8564
Name: IDHotel, Length: 335554, dtype: int64

Функция:

idshotel_list = list(set(dfrfm['IDHotel'].values))
idshotel_list.sort()


def encodeidhotel(idshotel_list,idshotel):
  onehotidhotel = np.zeros(len(idshotel_list),dtype = int) #vettore di zeri della lunghezza degli alberghi possibili
  for idx in idshotel: # per ogni albergo dell'utente corrente
    onehotidhotel[idshotel_list.index(idx)] = 1 #cerchiamo indice e poniamo elemento a 1
  return list(onehotidhotel)

Теперь я пытаюсь воспроизвести его для следующего столбца, где в каждой строке есть список служб, разделенных запятой:

dfrfm['HotelServices']


0                                                74, 82, 90
1                                16, 55, 79, 86, 87, 90, 92
2                       16, 52, 74, 79, 83, 85, 88, 90, 102
3                           16, 55, 79, 86, 87, 90, 92, 101
4                           16, 55, 79, 86, 87, 90, 92, 101
                                ...                        
335549                                         48, 79, 1710
335550    48, 55, 74, 79, 90, 1296, 1402, 1425, 1439, 15...
335551                       74, 79, 1296, 1586, 1699, 1711
335552    48, 55, 74, 79, 90, 1296, 1402, 1425, 1439, 15...
335553                   74, 79, 90, 1279, 1296, 1531, 1619
Name: HotelServices, Length: 335554, dtype: object

Я пробовал использовать split , но я постоянно получаю эту ошибку:

TypeError: 'float' object is not iterable

Я также пробовал MultiLabelBinarizer , но у него та же проблема:

from sklearn.preprocessing import MultiLabelBinarizer

mlb = MultiLabelBinarizer()

df = pd.DataFrame(mlb.fit_transform(dfrfm['HotelServices']),columns=mlb.classes_, index=dfrfm.index)
print (df)

Что Я делаю не так?

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