我有一个数据框,其中的项目符合特定条件时会被标记。因此,每当您在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列将为空。
答案 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