擅长:python、mysql、java
<p>我不知道您是否可以使用<code>scikit-learn</code>来实现这一点,但是您可以编写一个函数,然后使用<code>apply()</code>将其应用于您的<code>DataFrame</code>或{<cd4>}。在</p>
<p>以下是您可以如何进行的示例:</p>
<pre><code>test = pd.DataFrame(['apple is a fruit', 'fruit sucks', 'apple tasty fruit'], columns = ['A'])
def a_function(row):
splitted_row = str(row.values[0]).split()
word_occurences = []
for word in splitted_row:
column_occurences = test.A.str.count(word).sum()
word_occurences.append((word, column_occurences))
return word_occurences
test.apply(a_function, axis = 1)
# Output
0 [(apple, 2), (is, 1), (a, 4), (fruit, 3)]
1 [(fruit, 3), (sucks, 1)]
2 [(apple, 2), (tasty, 1), (fruit, 3)]
dtype: object
</code></pre>
<p>如您所见,主要问题是<code>test.A.str.count(word)</code>将计算<code>word</code>的所有出现次数,无论分配给<code>word</code>的模式在字符串内。这就是为什么<code>"a"</code>显示为发生4次。这应该很容易用一些正则表达式来解决(我不太擅长)。在</p>
<p>或者,如果您愿意丢失一些单词,可以在上面的函数中使用此解决方法:</p>
^{pr2}$