<p>对于O(n)复杂性解决方案,使用<code>collections.Counter</code>。你知道吗</p>
<pre><code>from collections import Counter
import pandas as pd
df = pd.DataFrame([['Directions to Starbucks', 1045],
['Show me directions to Starbucks', 754],
['Give me directions to Starbucks', 612],
['Navigate me to Starbucks', 498],
['Display navigation to Starbucks', 376],
['Direct me to Starbucks', 201],
['Navigate to Starbucks', 180]],
columns = ['Utterance', 'Frequency'])
c = Counter()
for row in df.itertuples():
for i in row[1].split():
c[i] += row[2]
res = pd.DataFrame.from_dict(c, orient='index')\
.rename(columns={0: 'Count'})\
.sort_values('Count', ascending=False)
</code></pre>
<p><strong>结果</strong></p>
<pre><code> Count
to 3666
Starbucks 3666
me 2065
directions 1366
Directions 1045
Show 754
Navigate 678
Give 612
Display 376
navigation 376
Direct 201
</code></pre>
<p><strong>解释</strong></p>
<ul>
<li>循环浏览每一行和每一行中的每一个单词。你知道吗</li>
<li>对于每个单词,使用单词作为键递增计数器。你知道吗</li>
<li>从结果字典创建数据帧。你知道吗</li>
</ul>