如何统计列中连续重复的正负符号并生成计数新列?
生成连续正负符号重复次数列的实现方法
以下是用Python pandas库实现的步骤,完全匹配你的需求:
准备示例数据
先构造你提供的示例数据集:import pandas as pd import numpy as np df = pd.DataFrame({'col1': [-5, -3, -7, 4, 5, -0.5, 6, 8, 9]})标记数值符号
给每个数值添加正负标记(1代表正数,-1代表负数,0可根据需求自定义规则):df['sign'] = np.where(df['col1'] > 0, 1, np.where(df['col1'] < 0, -1, 0))创建连续符号分组
通过比较当前行与上一行的符号是否变化,生成分组ID,将连续相同符号的数值归为同一组:df['group_id'] = (df['sign'] != df['sign'].shift()).cumsum()计算每组长度并映射
对每个分组计算元素个数,再通过transform方法将结果映射回原数据的每一行,得到目标列count_sign:df['count_sign'] = df.groupby('group_id')['col1'].transform('count')查看最终结果
保留需要的列即可得到你要的输出: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
相关产品推荐
相关产品推荐

