【问题标题】:How to Get Count Vectorization of Dataframe of Arrays of Strings如何获取字符串数组数据帧的计数向量化
【发布时间】:2022-07-01 03:12:48
【问题描述】:

我有一个数据框df1 如下:

    words_separated
0   [lorem, ipsum]
1   [dolor, sit, amet]
2   [lorem, ipsum, dolor, sit, lorem]

所以每一行都包含一个单词数组。我想得到类似这样的数据框df2:

    lorem, ipsum, dolor, sit, amet
0   1,     1,     0,     0,   0
1   0,     0,     1,     1,   1
2   2,     1,     1,     1,   1

因此,df2 将为出现在 df1 中的每个唯一单词提供一列,以及与 df1 中的行对应的行,并记录单词在 df1 的相应行中出现的次数。这称为计数向量化

我想过像这样使用MultiLabelBinarizer

from sklearn.preprocessing import MultiLabelBinarizer

count_vec = MultiLabelBinarizer()
mlb = count_vec.fit(df["comment text"])
pd.DataFrame(mlb.transform(df["comment text"]), columns=[mlb.classes_])

    lorem, ipsum, dolor, sit, amet
0   1,     1,     0,     0,   0
1   0,     0,     1,     1,   1
2   1,     1,     1,     1,   1

但是这只返回如果一个单词存在于行中,而不是这个单词出现了多少次,这是我需要的。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    事实证明,我实际上可以使用 scikit-learn 的 CountVectorizer 来完成这项任务。

    但是,我首先需要将df1 中的数组转换为字符串,因为它需要字符串:

    text = df1["words_separated"].map(' '.join)
    
    count_vec = CountVectorizer()
    cv = count_vec.fit(text)
    
    pd.DataFrame(cv.transform(text).toarray(), columns=[columns=[list(cv.vocabulary_.keys())]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-15
      • 2023-01-03
      • 2018-01-02
      • 2022-06-16
      • 2020-11-06
      • 1970-01-01
      • 2015-02-12
      相关资源
      最近更新 更多