【发布时间】:2021-06-05 14:02:06
【问题描述】:
我是 pandas 的新手,我现在正在 Kaggle 上学习它。
这是一个练习,要求在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]
更新!原来的问题是: 创建一个系列descriptor_counts,计算这两个词中的每一个在数据集的描述列中出现的次数。
【问题讨论】:
-
我怀疑是因为第一个计算每个描述中字符串的出现次数,然后将它们相加。如果描述中存在字符串,则第二个映射为 True,然后对它们求和(布尔值转换为整数以进行加法 - 例如。
True + True == 2)。 -
不同之处在于
.str.count可以处理每个条目中单词的多次出现,而.map(lambda desc: 'tropical' in desc)只计算每个条目的布尔True/False,因此多次出现只会计为1。跨度>