Pandas 计数 Positive/Negative/Neutral 个值

Pandas Count Positive/Negative/Neutral Values

在 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

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

sentiment    count
----------------
positive     2
neutral      1
negative     2

其中 'senti' 分为正面、负面或中性。

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

非常感谢

我会使用 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

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

pd.value_counts(cut, sort=False).rename_axis('senti').reset_index(name='count')

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

df.groupby(df['senti'].apply(lambda x: 'negative' if x < -0.1 else 'positive' if x > 0.1 else 'neutral'))['senti'].count()