首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫计数正/负/中性值

熊猫计数正/负/中性值
EN

Stack Overflow用户
提问于 2017-03-20 15:38:34
回答 2查看 4.4K关注 0票数 3

在Pandas中,我有一个具有以下格式的列和记录的数据框架:

代码语言:javascript
复制
text           source    senti
-------------------------------
great food     site1     0.6
awful staff    site4     -0.4
good chef      site8     0.4
average food   site6     0.05
bad food       site2     -0.8

文本列本质上是对某物的描述或意见。我想对数据集的平均情绪得出一些结论,输出如下。

代码语言:javascript
复制
sentiment    count
----------------
positive     2
neutral      1
negative     2

我们有一个“哨兵”的计数分组为积极,消极或中立。

在满足下列条件时,这些情绪被视为每一群体的情绪:

  • 积极的记录,情绪>0.1。
  • 中立记录得分>-0.1和<0.1。
  • 负面记录得分<-0.1

提前大谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-20 15:47:53

我会用pd.cut + groupby

代码语言:javascript
复制
cut = pd.cut(
    df.senti,
    [-np.inf, -.1, .1, np.inf],
    labels=['positive', 'neutral', 'negative']
)

df.groupby(cut).senti.count().reset_index(name='count')

      senti  count
0  positive      2
1   neutral      1
2  negative      2

正如@root所指出的,pd.value_countscut变量上给出了相同的解决方案。

代码语言:javascript
复制
pd.value_counts(cut, sort=False).rename_axis('senti').reset_index(name='count')
票数 5
EN

Stack Overflow用户

发布于 2017-03-20 15:49:59

另一个使用apply映射到组的版本:

代码语言:javascript
复制
df.groupby(df['senti'].apply(lambda x: 'negative' if x < -0.1 else 'positive' if x > 0.1 else 'neutral'))['senti'].count()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42907842

复制
相关文章

相似问题

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