如何迭代熊猫数据框中的数据?

时间:2017-04-24 05:46:08

标签: python-3.x

我为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)

谢谢!

1 个答案:

答案 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

小一个