gpt4 book ai didi

python - 基于其他列中的数据的列表中单词的频率

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:55 25 4
gpt4 key购买 nike

我有一个如下所示的数据框

Utterance                         Frequency   
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

这里有一些数据显示人们的言论,以及这些言论的频率。

即,“前往星巴克的路线”被说了 1045 次,“告诉我去星巴克的路线”被说了 754 次,等等。

我正在尝试获取单个单词被说出的频率。

我尝试使用 .value_counts(),但这只给了我以下内容

Utterance       Frequency   
Starbucks       7
Directions 3
Navigate 2
.
.
.

相反,我试图获得以下输出

Utterance       Frequency   
Starbucks       3666
Directions 2411
Navigate 678
.
.
.

换句话说,我试图获得它们被说出的频率,而不是它们出现的行数,这正是 value.counts() 发生的事情

感谢您的帮助!

最佳答案

对于复杂度为 O(n) 的解决方案,请使用 collections.Counter

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)

结果

            Count
to 3666
Starbucks 3666
me 2065
directions 1366
Directions 1045
Show 754
Navigate 678
Give 612
Display 376
navigation 376
Direct 201

解释

  • 遍历每一行和每一行中的每个单词。
  • 对于每个单词,使用该单词作为键,递增计数器。
  • 从生成的字典创建数据框。

关于python - 基于其他列中的数据的列表中单词的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49494240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com