大熊猫计算正/负/中性值

Lew*_*son 2 python group-by aggregate pandas pandas-groupby

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

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
Run Code Online (Sandbox Code Playgroud)

文本列基本上是对某事的描述或意见.我想得出关于数据集的平均情绪的一些结论,输出就像这样.

sentiment    count
----------------
positive     2
neutral      1
negative     2
Run Code Online (Sandbox Code Playgroud)

我们将'senti'计为正数,负数或中性.

在满足以下条件时,情绪被计为每个组:

  • 积极记录的情绪> 0.1
  • 中性记录的得分> -0.1 AND <0.1
  • 负面记录得分<-0.1

非常感谢提前

piR*_*red 5

我用pd.cut+groupby

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
Run Code Online (Sandbox Code Playgroud)

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

pd.value_counts(cut, sort=False).rename_axis('senti').reset_index(name='count')
Run Code Online (Sandbox Code Playgroud)