从 pandas 中构建不同单词的词汇表

Build a vocabulary of distinct words from pandas

我有一个名为“文章编号”的索引系列和一个名为“文本”的列。系列看起来像这样:

Article ID   |   Text
  Article#1     This is a beautiful day
  Article#2     I love you
  Article#3     This is too late
  Article#4     Love you back
  Article#5     This is a lovely day

distinct_words = ['This', 'beautiful', 'day']

我想创建一个字典,它的键是不同的词,它的值是它所在的文章列表。 所以上面的例子是:

vocabulary = {"This":[Article#1, Article#3], "beautiful":[Article#1], "day":[Article#1, Article#5}
      

我写的是:

vocabulary ={}
for word in distinct_words:
    filt = df.str.findall(word)
    vocabulary[word] = df.loc[filt].index

但是我得到这个错误:

TypeError: unhashable type: 'list'

有人可以帮我解决这个问题吗?我尝试了一个嵌套循环,但由于我的原始文件很大,它需要几分钟,但问题需要在 40 秒内计算出来。有人告诉我使用 re 模块会很棒。

Series.str.findall() returns 匹配值作为列表。您可以使用 Series.str.contains() 来查找列是否包含值。

for word in distinct_words:
    vocabulary[word] = df[df['Text'].str.contains(word)].index.tolist()