我为5年的数据创建了5天移动平均线。如何迭代显示移动平均线是否每天都在上升或下降。我的代码只是给我一个整数答案而不是每天的上升(+1)或下降(-1)答案。谢谢!
import pandas as pd
df = pd.read_csv('file:///C:/Users/James Brodie/Desktop/USDJPY.csv', header=1, index_col=0)
ma5 = df['PX_LAST'].rolling(window=5).mean()
ma8 = df['PX_LAST'].rolling(window=8).mean()
ma21 = df['PX_LAST'].rolling(window=21).mean()
ma5x = []
for i in ma5:
if i > i-1:
ma5x = 1
elif i < i-1:
ma5x = -1
else:
ma5x = 0
print(ma5x)
谢谢!
答案 0 :(得分:0)
ma5 = [5,2,2,3,3,2,5]
ma5x = []
lastItem = ma5[0]
for currItem in ma5[1:]:
if currItem > lastItem:
ma5x.append(1)
elif currItem < lastItem:
ma5x.append(-1)
else:
ma5x.append(0)
lastItem = currItem
print(ma5x)
给出:
[-1, 0, 1, 0, -1, 1]
列表中的元素最好在pandas中表示为一个Series对象(将自己的索引作为替换list(range(len(ma5x)))
的行替换为您需要的任何内容):
print('-----------')
import pandas as pd
pd_ma5x = pd.Series(ma5x, index=list(range(len(ma5x))))
print(pd_ma5x)
给出:
-----------
0 -1
1 0
2 1
3 0
4 -1
5 1
dtype: int64
使用自己的索引要注意,
小一个pd_ma5x
的尺寸比ma5