【发布时间】:2020-01-02 21:02:48
【问题描述】:
下面的代码(计算 N 天的移动平均线)效果很好。但我想用 50 替换其他数字(例如 5、10、20 等)。不确定是否可以将以下代码转换为 for 循环中的内容。有人可以帮帮我吗?
df['ma50pfret']= df['ret']
df.loc[df.adjp >= df.ma50, 'adjp > ma50']= 1
df.loc[df.adjp < df.ma50, 'adjp > ma50']= 0
df.iloc[0, -1]= 1
df['adjp > ma50']= df['adjp > ma50'].astype(int)
df.loc[df['adjp > ma50'].shift(1)== 0, 'ma50pfret']= 1.000079 # 1.02**(1/250)
df['cum_ma50pfret']=df['ma50pfret'].cumprod()
df.head(10)
【问题讨论】:
-
欢迎堆栈溢出!不幸的是,这个问题不够详细,无法为您提供任何有意义的帮助。请编辑您的问题以包含该问题的最小可重现示例,包括您迄今为止尝试过的示例输入和首选输出。
标签: python python-3.x pandas dataframe for-loop