我有一个(非常大的)系列,其中包含关键字(例如,每行包含多个由“-”分隔的关键字)
In[5]: word_series
Out[5]:
0 the-cat-is-pink
1 blue-sea
2 best-job-ever
dtype: object
我有另一个系列,其中包含每个单词的分数属性(单词是索引,分数是值),例如:
In[7]: all_scores
Out[7]:
the 0.34
cat 0.56
best 0.01
ever 0.77
is 0.12
pink 0.34
job 0.01
sea 0.87
blue 0.65
dtype: float64
我的 word_series 中的所有单词都出现在我的分数中。我试图根据 all_scores 中每个单词的平均分数,找到将分数归因于 word_series 的每一行的最快方法。如果一行是 n/a,则分数应该是分数的平均值。
我试过用这种方式应用,但它太慢了。
scores = word_series.apply(
lambda x: all_scores[x.split('-')].mean()).fillna(
all_scores.mean())
然后我想我可以使用 str.replace 将 all_words 拆分为列,并且可能使用这个新矩阵 M 和我的单词 M.mul(all_scores) 执行矩阵乘法类型的操作,其中 M 中的每一行都与基于索引的值匹配的 all_scores。这将是第一步,为了得到平均值,然后我可以除以每行非 na 的数量
In[9]: all_words.str.split('-', expand=True)
Out[9]:
0 1 2 3
0 the cat is pink
1 blue sea None None
2 best job ever None
这样的手术可行吗?还是有另一种快速的方法来实现这一目标?
繁星淼淼
慕妹3146593
相关分类