Ошибка генерирования фрейма данных fit_transform с на первый взгляд некорректной ошибкой - PullRequest
0 голосов
/ 08 ноября 2018

Я использую данную строку в Python:

df = df.apply(lambda x: d[x.name].fit_transform(x))

И получаю следующую ошибку:

~/anaconda3/envs/python3/lib/python3.6/site-packages/numpy/lib/arraysetops.py in _unique1d(ar, return_index, return_inverse, return_counts)
278 
279     if optional_indices:
--> 280         perm = ar.argsort(kind='mergesort' if return_index else 'quicksort')
281         aux = ar[perm]
282     else:

TypeError: ("'<' not supported between instances of 'str' and 'float'", 'occurred at index name')

В моем файле нет символа '<', поэтому не знаете, в чем ошибка? </p>

Впервые в Python, поэтому любые идеи о том, как понимать эти ошибки, очень ценятся.

1 Ответ

0 голосов
/ 08 ноября 2018

Я думаю, что это может произойти, потому что вы не передаете чистые или правильные данные в fit_transform. Трудно сказать без ответа на мой вопрос в комментариях (что означает d в df = df.apply(lambda x: d[x.name].fit_transform(x))?)

Я взял несколько фиктивных данных и привел пример того, как вы можете применить fit_transform к фрейму данных с применением.

import random
import pandas as pd
import numpy as np

# Random dummy data
s = "Crime Type Summer|Crime Type Winter".split("|")
j = {x: [random.choice(["ASB", "Violence", "Theft", "Public Order", "Drugs"]) for j in range(300)] for x in s}
df = pd.DataFrame(j)

# Instantiate the vectorizer for use in the lambda function.
from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer()

# Now we can call the transform directly in the lambda function.
df = df.apply(lambda x: cv.fit_transform(df[x.name].values))

Это успешно завершается и дает:

Crime Type Summer      (0, 1)\t1\n  (1, 4)\t1\n  (2, 2)\t1\n  (2, 3...
Crime Type Winter      (0, 5)\t1\n  (1, 0)\t1\n  (2, 0)\t1\n  (3, 5...
dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...