【发布时间】:2020-04-10 14:24:12
【问题描述】:
我有这个数据框,我可以使用矢量化器获取每行每个项目的计数。但这适用于单行(例如 col1)。如何将其应用于整个数据框(所有 3 列)?
import pandas as pd
import numpy as np
from sklearn.feature_extraction.text import CountVectorizer
shopping_list = [
["Apple", "Bread", "Fridge"],
["Rice", "Bread", "Milk"],
["Apple", "Rice", "Bread"],
["Rice", "Milk", "Milk"],
["Apple", "Bread", "Milk"],
]
df = pd.DataFrame(shopping_list)
df.columns = ['col1', 'col2', 'col3']
CV = CountVectorizer()
cv_matrix=CV.fit_transform(df['col1'].values)
ndf = pd.SparseDataFrame(cv_matrix)
ndf.columns = CV.get_feature_names()
X = ndf.fillna("0")
单列结果正确:
apple rice
0 1 0
1 0 1
2 1 0
3 0 1
4 1 0
所有列的预期结果:
Apple Rice Bread Milk Fridge
0 1 0 1 0 1
1 0 1 1 1 0
2 1 1 1 0 0
3 0 1 0 2 0
4 1 0 1 1 0
还有其他方法可以获得相同的结果吗?
【问题讨论】:
-
嗨@shantanuo,答案对你有帮助吗??
-
你能告诉我为什么
python标签与这个问题无关吗? -
如果你在数物品,那么牛奶必须是第 4 行中的 2 对吧?
-
删除了 python 标记,因为我正在寻找仅使用“CountVectorizer”类的解决方案。 ALollz 已经回答了这个问题。他可以使用 sum 而不是 max 来获得第 4 行中的牛奶 2
-
您的真实数据是否与此相似?您可能会更好地使用不同的数据结构?我相信它已经被提出来了,但我也会鼓励替换那个 SparseDataframe。
标签: scikit-learn countvectorizer