我是熊猫新手,现在正在Kaggle上学习。
这是一个练习,要求在描述列中查找两个单词的出现次数。
我从stackoverflow找到了第一个语句,但是第二个是正确的答案。产生这种不同结果的原因是什么? 谢谢!!!
tropical = reviews.description.str.count("tropical").sum()
fruity = reviews.description.str.count("fruity").sum()
descriptor_counts = pd.Series([tropical,fruity])
`
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]
更新!最初的问题是: 创建一个Series descriptor_counts,计算这两个单词中每个单词出现在数据集的描述栏中的次数。
答案 0 :(得分:1)
第一个比较少,因为它只获取是 'tropical'
或'fruity'
的值。
所以:
>>> s='a'
>>> s=='a'
True
但是第二个是获取包含 'tropical'
或'fruity'
的值,因此上面的内容:
>>> s='ab'
>>> s=='a'
False
它确实如此:
>>> s='ab'
>>> 'a' in s
True
答案 1 :(得分:0)
这是一个例子
第一个代码将热带计算为5,将水果计算为4。它计算相同描述中单词的重复。
因此,在此示例中,结果将为[5,4]
。
第二个代码将topic计数为4,将水果计数为3。它计算每个描述中单词的存在(if tropical in description
)。一旦找到它,无论该描述中有多少个,它都算作一个。
因此,结果将是[4,3]
。
所以,我觉得这个问题是错误的。如果问题与两个单词的出现次数有关,则在此示例中[5,4]
应该是正确的(在您的情况下为[3703,9259]
)。如果问题询问每个单词出现多少个描述,那么您正在使用if word in description
来计数描述。因此,再检查一次该问题。
答案 2 :(得分:0)
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 表达式”的解决方案