首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python:比较两个具有不同键的计数器对象

Python:比较两个具有不同键的计数器对象
EN

Stack Overflow用户
提问于 2018-06-26 05:09:42
回答 1查看 519关注 0票数 1

我有两个字符串,我希望对它们进行单词标记化,然后比较它们的差异

代码语言:javascript
复制
s1 = 'one two shmoo'
s2 = 'one one two'

我的第一个想法是将它们都转换为collections.Counter对象,将它们包装在pd.Series中,然后减去它们之间的差异。

代码语言:javascript
复制
import pandas as pd
from collections import Counter
def counter_series(s):
    return pd.Series(Counter(s.split(' ')))

counter_series(s2) - counter_series(s1)

但输出显示,这种差异不会提供两个字符串中都不存在的单词的计数:

代码语言:javascript
复制
one      1.0
shmoo    NaN
two      0.0
dtype: float64

您如何才能包含缺少的计数?例如,在上面的输出中,shmoo也应该是1。解决方案不一定要使用pandas

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-26 05:19:21

fill_value = 0中使用sub

代码语言:javascript
复制
counter_series(s2).sub(counter_series(s1), fill_value=0)

输出:

代码语言:javascript
复制
one     -1.0
shmoo    1.0
two      0.0
dtype: float64

并且,您可以添加.abs()来获取差值的绝对值:

代码语言:javascript
复制
counter_series(s2).sub(counter_series(s1), fill_value=0).abs()

输出:

代码语言:javascript
复制
one      1.0
shmoo    1.0
two      0.0
dtype: float64

但是,我会使用value_counts而不是从集合中导入计数器。

代码语言:javascript
复制
def count_series(x):
   s = pd.Series(x.split(' '))
   return s.value_counts()
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51031822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档