python如何计算数值序列中连续正值和负值的个数

如何计算中数值序列类型中,连续的正值和负值的个数? 两种方法如下:

import  pandas as pd

data = [1,-1,-1,1,1,1,1,-1,-1]
series_data = pd.Series(data)
vals = series_data.gt(0).ne(series_data.gt(0).shift()).cumsum()
result= pd.DataFrame(vals.groupby(vals).count().values.reshape(-1, 2), columns=['pos', 'neg'])

print(result)

结果如下:

    pos  neg
0    1    2
1    4    2

方法2:

import pandas as pd
import numpy as np

series_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(sereis_val):
      v = sereis_val.ge(0).ne(sereis_val.ge(0).shift()).cumsum()    
      vals = v.groupby(v).count().values        
     cols = ['pos', 'neg'] if a[0] >= 0 else ['neg', 'pos']
     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 

res = pos_neg_count(series_data)
print(res)

结果如下:

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

python如何计算数值序列中连续正值和负值的个数

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

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

相关推荐

发表回复

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