这两种计算文本列中两个单词出现次数的方法有什么区别?

2024-04-26 12:33:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚接触熊猫,现在正在卡格尔学习

下面是一个练习,要求description列中查找两个单词出现的次数

我从StackOverflow中找到了第一条语句,但第二条是正确答案。这种不同结果的原因是什么

1。从StackOverflow中找到

tropical = reviews.description.str.count("tropical").sum()
fruity = reviews.description.str.count("fruity").sum()
descriptor_counts = pd.Series([tropical,fruity])

`

2。正确答案

tropical = reviews.description.map(lambda desc: 'tropical' in desc).sum()
fruity = reviews.description.map(lambda desc: 'fruity' in desc).sum()
descriptor_counts = pd.Series([tropical, fruity],index=['tropical','fruity'])

第一个结果是[3703, 9259] 第二个结果是[3607, 9090]

更新!原来的问题是: 创建一个序列描述符,计算这两个单词在数据集中的“描述”列中出现的次数


Tags: 答案countdescription单词stackoverflow次数descpd
3条回答

第一个较小,因为它只获取'tropical''fruity'的值

因此:

>>> s='a'
>>> s=='a'
True

但是第二个是获取包含的'tropical''fruity'的值,因此上面:

>>> s='ab'
>>> s=='a'
False

它确实:

>>> s='ab'
>>> 'a' in s
True

这里有一个例子

enter image description here

第一个代码计算热带为5,水果为4。它计算同一描述中单词的重复次数。 因此,在本例中,结果将是[5,4]

第二个代码计数为4,而水果为3。它统计每个描述中单词的存在(if tropical in description)。一旦你找到了它,不管描述中还有多少,它都算作一。 因此,结果将是[4,3]

所以,我觉得这个问题是错误的。如果问题是关于这两个单词出现的次数,在本例中[5,4]应该是正确的(在您的案例中[3703,9259])。如果问题询问每个单词出现了多少描述,那么您使用if word in description计算描述。所以,再检查一次这个问题

count1, count2 = 0, 0

for i in description.iteritems():
    if "fruity" in i[0]:
        count1 += i[1]
    if "tropical" in i[0]:
        count2 += i[1]

descriptor_counts = pd.Series(data = {"fruity": count1, "tropical": count2},
                          index = ["tropical", "fruity"])

最近我遇到了同样的问题,这将是我的解决方案,不使用“lambda表达式”

相关问题 更多 >