You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计列中连续重复的正负符号并生成计数新列?

生成连续正负符号重复次数列的实现方法

以下是用Python pandas库实现的步骤,完全匹配你的需求:

  1. 准备示例数据
    先构造你提供的示例数据集:

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({'col1': [-5, -3, -7, 4, 5, -0.5, 6, 8, 9]})
    
  2. 标记数值符号
    给每个数值添加正负标记(1代表正数,-1代表负数,0可根据需求自定义规则):

    df['sign'] = np.where(df['col1'] > 0, 1, np.where(df['col1'] < 0, -1, 0))
    
  3. 创建连续符号分组
    通过比较当前行与上一行的符号是否变化,生成分组ID,将连续相同符号的数值归为同一组:

    df['group_id'] = (df['sign'] != df['sign'].shift()).cumsum()
    
  4. 计算每组长度并映射
    对每个分组计算元素个数,再通过transform方法将结果映射回原数据的每一行,得到目标列count_sign:

    df['count_sign'] = df.groupby('group_id')['col1'].transform('count')
    
  5. 查看最终结果
    保留需要的列即可得到你要的输出:

    result = df[['col1', 'count_sign']]
    print(result)
    

输出结果:

col1  count_sign
0  -5.0           3
1  -3.0           3
2  -7.0           3
3   4.0           2
4   5.0           2
5  -0.5           1
6   6.0           3
7   8.0           3
8   9.0           3

补充说明

如果数据中包含0,可以根据实际业务需求调整符号判断规则,比如将0归为正数类别,或是单独作为一类,只需修改np.where的条件逻辑即可。

内容的提问来源于stack exchange,提问作者user15649753

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 03:50:47