基于现有列+行值的Pandas查找语法?

时间:2017-10-22 11:07:56

标签: python pandas numpy time-series

这是我的第一个问题,即堆栈溢出。我已经通过论坛进行了搜索,发现了一个问题,这是我无法找到解决方案的确切问题。但是没有答案。我在这里复制了它。任何帮助将不胜感激。

What is pandas syntax for lookup based on existing columns + row values?

以下是已完成内容的摘要

  1. 创建一个包含两列的pandas df1:'日期'和' Price' - 完成

  2. 我添加了两个新列:' rollmax'和' rollmin',其中' rollmax'是一个8天的最大滚动和' rollmin'是最低限度的。 - 完成

  3. 现在我需要创建另一个列' rollmax_date'这将通过查找规则填充:
  4. 对于第n行,请转到“价格”列。并解析过去8天的值并找到最大值,然后得到相应的日期并将此值放在' rollingmax_date'列中。

    ' rollingmin_date'采用相同的逻辑,但我们不是滚动最大日期,而是查找滚动最小日期。

    我做了前两个并尝试了第三个,但我得到了错误的结果。

    下面的代码只给出了同一行的日期df [" Price"]与df [' rollmax']相同,但它并没有带来所有相应的日期来自'日期'到' rollmax_date'

    df['rollmax_date'] = df.loc[(df["High"] == df.rollmax), 'Date']
    

    Q中的图像如下:

    Image

    编辑:

    以下是所要求的其他输入。

    由于某种原因,我无法在此处粘贴数据框的副本。它是股票的典型数据框架。我列有' Date',' Open',' High'' Close'。 Rollmax和Rollmin的计算方法如上。现在,我需要在Rollmax_date'列中填写Rollmax和Rollmin的日期。和' Rollmin_date'

    这里添加了DataFrame。格式不佳。无法将其粘贴为表格

    如图所示,第一个rollmax是11872,发生在2011年1月4日。我正在尝试将此值放入列中#Roll;滚动日期'

    df = quandl.get(stock,start_date = start, end_date = end)
    df['Date']=df.index
    df['rollmax'] = df['High'].rolling(period_up).max().shift(-period_up)
    df['rollmin'] = df['Low'].rolling(period_down).min().shift(-period_down)
    

    其中period_up& period_down = -8(' - '是将来的数据查找到特定行的当前日期)

                    Open      High       Low     Close  Shares Traded  \
    Date                                                                
    2011-01-03  11882.10  11912.15  11826.95  11855.75      8895927.0   
    2011-01-04  11868.40  11872.80  11545.55  11564.05     16041214.0   
    2011-01-05  11545.75  11545.75  11265.55  11305.45     19689201.0   
    2011-01-06  11350.70  11377.10  11164.75  11186.80     19559984.0   
    2011-01-07  11146.45  11258.50  11007.90  11053.35     25192954.0   
    2011-01-10  11024.50  11072.70  10671.60  10700.65     21584988.0   
    2011-01-11  10734.20  10951.20  10620.80  10833.55     22297958.0   
    2011-01-12  10906.40  11161.15  10728.45  11128.15     24855243.0   
    2011-01-13  11125.95  11127.95  10676.50  10716.65     18520804.0   
    2011-01-14  10746.80  10907.30  10387.90  10432.90     19299172.0   
    
                Turnover (Rs. Cr)  Date   rollmax   rollmin  
    Date                                                         
    2011-01-03          909.29  2011-01-03   11872.80     10373.8  
    2011-01-04          1949.98  2011-01-04   11545.75     10373.8  
    2011-01-05          1988.86  2011-01-05   11377.10     10373.8  
    2011-01-06          2114.13  2011-01-06   11258.50     10373.8  
    2011-01-07          2746.05  2011-01-07   11161.15     10373.8  
    2011-01-10          2389.16  2011-01-10   11177.85     10373.8  
    2011-01-11          2407.41  2011-01-11   11256.95     10373.8  
    2011-01-12          2703.24  2011-01-12   11256.95     10373.8  
    2011-01-13          1939.18  2011-01-13   11256.95     10373.8  
    2011-01-14          2054.64  2011-01-14   11256.95     10373.8  
    

0 个答案:

没有答案