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