如何计算中数值序列类型中,连续的正值和负值的个数? 两种方法如下:
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

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