【问题标题】:How do I iterate through 2 columns of pandas dataframe data?如何遍历 2 列 pandas 数据框数据?
【发布时间】:2017-10-05 22:25:24
【问题描述】:

我已经导入了一些数据并计算了 5 天、8 天和 21 天的移动平均线。

             OPEN   HIGH    LOW   LAST     ma5     ma8  ma21
Date                                                        
11/23/2009  88.84  89.19  88.58  88.97     NaN     NaN   NaN
11/24/2009  88.97  89.07  88.36  88.50     NaN     NaN   NaN
11/25/2009  88.50  88.63  87.22  87.35     NaN     NaN   NaN
11/26/2009  87.35  87.48  86.30  86.59     NaN     NaN   NaN
11/27/2009  86.59  87.02  84.83  86.53  87.588     NaN   NaN
11/30/2009  87.17  87.17  85.87  86.41  87.076     NaN   NaN

然后我遍历了 5 天移动平均线 (ma5) 以计算平均线是上升 (+1)、下降 (-1) 还是恒定 (0)。使用;

ma5x = [0,]
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

但是,我如何遍历 2 列数据。例如,如果我想查看 8 天移动平均线 (ma8) 和 21 天移动平均线 (ma21) 是同时上涨 (+1),还是同时下跌 (-1),或者它们是否朝着不同的方向移动(0)?

其次,我如何将此数据添加到原始数据框中?我不确定如何连接我们在上面创建的第二个数据框,因为原始数据没有第一个“日期”列的列索引。非常感谢。

【问题讨论】:

    标签: python-3.x dataframe iteration concatenation


    【解决方案1】:

    使用zip 函数同时遍历两个或多个项目。

    ma = []
    ma5Last = ma5[0]
    ma8Curr = ma8[0]
    
    for ma5Curr, ma8Curr in zip(ma5[1:], ma8[1:]):
        if ma5Curr > ma5Last and ma8Curr > ma8Last:
            ma.append(1)
        elif ma5Curr < ma5Last and ma8Curr < ma8Last:
            ma.append(-1)
        else:
            ma.append(0)
        ma5Last = ma5Curr
        ma8Last = ma8Curr
    

    要将新数据帧与原始数据帧组合使用merge

    origData = origData.merge(otherData)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 2021-04-05
      • 2018-09-26
      • 2021-06-28
      • 2020-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多