Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫,获取pct变化周期平均值_Python_Pandas - Fatal编程技术网

Python 熊猫,获取pct变化周期平均值

Python 熊猫,获取pct变化周期平均值,python,pandas,Python,Pandas,我有一个数据框,其中包含如下列: pct\u变更 0南 1 -0.029767 2 0.039884#一个周期 3 -0.026398 4 0.044498#两个周期 5 0.061383#两个周期 6 -0.006618 7 0.028240#一个周期 8 -0.009859 9 -0.012233 10 0.035714#三个周期 11 0.042547#三个周期 12 0.027874#三个周期 13 -0.008823 14 -0.0

我有一个数据框,其中包含如下列:

pct\u变更
0南
1     -0.029767
2 0.039884#一个周期
3     -0.026398
4 0.044498#两个周期
5 0.061383#两个周期
6     -0.006618 
7 0.028240#一个周期
8     -0.009859
9     -0.012233
10 0.035714#三个周期
11 0.042547#三个周期
12 0.027874#三个周期
13    -0.008823
14    -0.000131
15 0.044907#一个周期
我想将pct变化为正值的所有时段都放入一个列表中,因此对于示例列,它将是:

raise_periods = [1,2,1,3,1]

假设数据帧的列是一个名为
y
的系列,其中包含
pct\u更改
,下面的代码提供了一个无循环的矢量化解决方案

y = df['pct_change']
raise_periods = (y < 0).cumsum()[y > 0]
raise_periods.groupby(raise_periods).count()
y=df['pct\u change']
上升周期=(y<0).cumsum()[y>0]
提升周期。分组依据(提升周期)。计数()

最终,@gioxc88提供的答案并没有让我达到我想要的目的,但它确实让我走上了正确的方向

我最后做的是:

def获取上升平均周期(cls,df):
df[composite_DIFF]=df[NEWS_composite].DIFF()
df[连续复合]=df[复合差异].apply(如果x>0,则λx:1,否则为0)
#将上升和下降变化的时期组合在一起
未筛选的\u时段=[itertools.groupby(df.continuous\u high.values.tolist())中键的组列表(组)]
#只过滤上升期
正\u时段=[li表示未过滤\u时段中的li,如果0不在li中]
我想得到这个正周期的平均长度,所以我在末尾加了这个:

period=round(np.平均值(正周期镜头))

一、二或三个周期的标准是什么?@JoeFerndz每次列中有一个或多个正值时,我都要计算这些正值,直到下一次下降,然后重新开始。注意:使用
(~(y>0)).cumsum()
如果正数之间的
nan
被视为连续正数流的终止。否则
(y