python技巧计算数值序列中连续的正值或负值的个数

python技巧计算数值序列中连续的正值或负值的个数

python编程中,如何计算一个数值序列中连续的正值或连续的负值的个数,代码如下:

import numpy as np
data = pd.Series([-1, 12, 10, 3, 28, 5, 13, 0, 5,7, -4, -7, -5, 3, -9, -7, -16, -27, -2, 15, 27, -8])

def pos_neg_count(a):
    
    value = a.ge(0).ne(a.ge(0).shift()).cumsum()
    #print(value.to_list())
    vals = value.groupby(v).count().values
    initial_vals = vals
    print(vals)
    cols = ['pos', 'neg'] if a[0] >= 0 else ['neg', 'pos']
    #pos 存放正值的个数,neg 存放负值的个数
    try:
        result = pd.DataFrame(vals.reshape(-1, 2), columns=cols)
    except ValueError:
        vals = np.insert(vals, len(vals), 0)
        result = pd.DataFrame(vals.reshape(-1, 2), columns=cols)
    return result, initial_vals,vals

result_posneg = pos_neg_count(data)
print(result_posneg[0])
print(result_posneg[1])
print(result_posneg[2])

输出结果如下:

[1 9 3 1 5 2 1]
   neg  pos
0    1    9
1    3    1
2    5    2
3    1    0
[1 9 3 1 5 2 1]
[1 9 3 1 5 2 1 0]

结果说明,在数字序列data中有7段连续的正值或负值数据,第1段为1个负值,第2段为9个正值,第3段为3个负值,第4段为1个正值,第5段为5个负值,第6段为2个正值,第7段为1个负值。函数中创建一个dataframe,用两列存放计算结果,每一行包括连续负值的个数和连续负值的个数,行顺序即一对数正负连续个数的顺序。

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/76362
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 11 日
下一篇 2024 年 7 月 11 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注