为了账号安全,请及时绑定邮箱和手机立即绑定

文本中单词的频率(熊猫)

文本中单词的频率(熊猫)

ibeautiful 2022-05-24 15:31:55
我有一列单词,想计算文本中每个单词的频率并将结果保存在另一列中。数据:        word        frequency   0       l’iss           1       station         2       américaines         3       capsule         4       dernier         5       solaires            6       fusées          7       privé   文本:états-unis : lancement réussi pour station space x dragon états-unis : lancement réussi pour space x dragon la fusée falcon 9, développée par une société privée : spacex, a décollé de la station sans problème ce matinà 7h44 UTC。2012 年 5 月 22 日 - prévu initialement pour samedi dernier, le lancement a été reporté à la dernière seconde, Suite à la défaillance d'une Valve dans un des neuf moteurs du pre\xadmier étage du lan\xadceur。le lanceur a décollé du site de lancement du pas de tir 40 (slc-40) de la base de cape canaveral en floride, qui était autrefois utilisé pour les fusée titan iii et iv et qui a été reconverti pour ce lanceur。我试过:from collections import Counterfreq = df['word'].str.apply(Counter(text))我的输出:AttributeError:“StringMethods”对象没有“应用”属性良好的输出:        word        frequency   0       cape        11       station     22       américaines 0   3       capsule     0   4       dernier     15       solaires    0   6       fusée       2
查看完整描述

3 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

value_counts您可以将文本转换为计数器,然后使用和的组合从中获取结果to_dict。


# Assuming the text split is on \s

text_counts = pd.Series(text.split(' ')).value_counts().to_dict()

df['Frequency'] = df.word.apply(lambda x: text_counts.get(x, 0)) # In case the word doesn't exist

    word    Frequency

0   l’iss   0

1   station 2

2   américaines 0

3   capsule 0

4   dernier 0

5   solaires    0

6   fusées  0

7   privé   0

另一种方法是使用 Python 的 native Counter:


from collections import Counter

text_counter = Counter(text.split())

df['Frequency'] = df.word.apply(lambda x: text_counter.get(x, 0))


查看完整回答
反对 回复 2022-05-24
?
POPMUISE

TA贡献1765条经验 获得超5个赞

反过来会更容易。Counter从对象开始,然后构建数据框


from collections import Counter


text = '''états-unis : lancement réussi pour station space x dragon états-unis : lancement réussi pour space x dragon la fusée falcon 9, développée par une société privée : spacex, a décollé de la station sans problème ce matin à 7h44 utc. 22 mai 2012. - prévu initialement pour samedi dernier, le lancement a été reporté à la dernière seconde, suite à la défaillance d'une valve dans un des neuf moteurs du pre\xadmier étage du lan\xadceur. le lanceur a décollé du site de lancement du pas de tir 40 (slc-40) de la base de cape canaveral en floride, qui était autrefois utilisé pour les fusée titan iii et iv et qui a été reconverti pour ce lanceur.'''


# naive splitting, it might be better to use regex with \b

c = Counter(text.split())


df = pd.DataFrame(list(c.items()), columns=['word', 'count'])

print(df.head())

输出


         word  count

0  états-unis      2

1           :      3

2   lancement      4

3      réussi      2

4        pour      5

然后,您可以为您想要的单词过滤数据框(或者您可以在构建数据框时进行过滤)。


查看完整回答
反对 回复 2022-05-24
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

用空格替换逗号,.split()然后使用字典理解并将其映射到您的 df。


import pandas as pd


text = "états-unis : lancement réussi pour station space x dragon états-unis : lancement réussi pour space x dragon la fusée falcon 9, développée par une société privée : spacex, a décollé de la station sans problème ce matin à 7h44 utc. 22 mai 2012. - prévu initialement pour samedi dernier, le lancement a été reporté à la dernière seconde, suite à la défaillance d'une valve dans un des neuf moteurs du pre\xadmier étage du lan\xadceur. le lanceur a décollé du site de lancement du pas de tir 40 (slc-40) de la base de cape canaveral en floride, qui était autrefois utilisé pour les fusée titan iii et iv et qui a été reconverti pour ce lanceur."


df = pd.DataFrame({'word': ["l’iss", 'station', "américaines", "capsule", "dernier", "solaires", "fusée", "privé"]})


text_list = text.replace(',', ' ').split()

word_counts = {i: text_list.count(i) for i in text_list}

df['frequency'] = df['word'].map(word_counts).fillna(0)


查看完整回答
反对 回复 2022-05-24
  • 3 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信