Я думаю, что это может произойти, потому что вы не передаете чистые или правильные данные в 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