标记下一行X行的限定行

时间:2015-09-10 06:04:07

标签: python pandas

我有一个数据框,其中的项目符合特定条件时会被标记。因此,每当您在qualifying_date列中看到日期时,这意味着该项目符合当天的条件,因此被标记:

        current_date   abc    xyz    rth    qualifying_date
index
apple   2015-01-27     23     5712   713    
        2015-01-28     234    1357   152    2015-01-28
        2015-01-29     489    185    278
        2015-01-30     154    951    754
pear    2015-01-27     4786   7531   4751
        2015-01-28     476    367    45
        2015-01-29     15     37     783    2015-01-29
        2015-01-30     489    185    421
grape   2015-01-27     2513   57     7513   2015-01-27
        2015-01-28     237    587    733
        2015-01-29     7869   472    759    2015-01-29
        2015-01-30     489    185    278

现在我需要填充数据框的每一行,以指示每个项目的最后限定时间。换句话说,如果某个项目符合2015-01-27的标准,则会在该日标记。但是之后每天都需要填写相同的日期,因为这是项目合格的最近时间。这一直持续到该项目有一个新的合格日期(即:再次符合标准)。输出结果如下:

        current_date   abc    xyz    rth    qualifying_date
index
apple   2015-01-27     23     5712   713    
        2015-01-28     234    1357   152    2015-01-28
        2015-01-29     489    185    278    2015-01-28
        2015-01-30     154    951    754    2015-01-28
pear    2015-01-27     4786   7531   4751   
        2015-01-28     476    367    45     
        2015-01-29     15     37     783    2015-01-29
        2015-01-30     489    185    421    2015-01-29
grape   2015-01-27     2513   57     7513   2015-01-27
        2015-01-28     237    587    733    2015-01-27
        2015-01-29     7869   472    759    2015-01-29
        2015-01-30     489    185    278    2015-01-29

显然,如果某个项目从未合格,那么qualifying_date列将为空。

1 个答案:

答案 0 :(得分:1)

基本上您需要按每个索引值进行分组,然后您可以使用fillna(method='pad')向下填充缺失值:

df.groupby('index').qualifying_date.fillna(method='pad')
Out[91]: 
0            NaN
1            NaN
2     2015-01-28
3     2015-01-28
4     2015-01-28
5            NaN
6            NaN
7     2015-01-29
8     2015-01-29
9     2015-01-27
10    2015-01-27
11    2015-01-29
12    2015-01-29
dtype: object