python - 在 Pandas 中应用groupby后如何计算列的正数和负数

标签 python pandas

具有以下数据框:

      token name   ltp    change
0   12345.0  abc   2.0       NaN
1   12345.0  abc   5.0  1.500000
2   12345.0  abc   3.0 -0.400000
3   12345.0  abc   9.0  2.000000
4   12345.0  abc   5.0 -0.444444
5   12345.0  abc  16.0  2.200000
6    6789.0  xyz   1.0       NaN
7    6789.0  xyz   5.0  4.000000
8    6789.0  xyz   3.0 -0.400000
9    6789.0  xyz  13.0  3.333333
10   6789.0  xyz   9.0 -0.307692
11   6789.0  xyz  20.0  1.222222

我需要为名称列的每个类别计算正数和负数。在上面的例子中

abc:pos_count: 3 abc:neg_count:2
xyz:pos_count:2 xyz:neg_count:2

count=df.groupby('name')['change'].count()
count  

但是,这只给出了按组划分的总计数,而不是单独的正数和负数。

最佳答案

使用:

g = df.groupby('name')['change']
counts = g.agg(
    pos_count=lambda s: s.gt(0).sum(),
    neg_count=lambda s: s.lt(0).sum(),
    net_count=lambda s: s.gt(0).sum()- s.lt(0).sum()).astype(int)

结果:

# print(counts)
     pos_count  neg_count  net_count
name                                 
abc           3          2          1
xyz           3          2          1

关于python - 在 Pandas 中应用groupby后如何计算列的正数和负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62014890/

相关文章:

python - 如何以 ddmmyyyy 格式将日期解释为 3 12 而不是 31 2

python - 将 Pandas 中的句子拆分为句号和单词

python - 使用 Scapy 模块 (python) 从 pcap 文件获取特定包

python-3.x - 比较 2 个不同 pandas 数据帧的 2 列,如果在 Python 中相同的插入 1 到另一个

python - Dash 交互式图表不会从 Pandas Dataframe 更新

使用 session cookie 的 Python scrapy 登录

python - 如何循环遍历 pandas 分组时间序列?

python - 在子进程调用ffmpeg中禁用输出

python - 用零填充 3D 列表中的缺失值以创建 3D numpy 数组

python - 仅针对经过身份验证的用户的 Django 缓存