将系列中的最后一个值投影到Python中的将来单元格

时间:2019-06-05 20:37:10

标签: python pandas

我有一个2列的数据框,一年中的每个日期都有365行。每天都会收到数据,因此会填充此数据框。我想创建另一列,以输出1)历史数据,该数据实际包含数据的任何行,即date <今天;和2)没有实际数据的任何行的昨天数据,即日期> =今天。

说今天的日期是2019年5月5日:

Date           Actuals     Projection
05/01/2019     2           2
05/02/2019     7           7
05/03/2019     8           8
05/04/2019     4           4
05/05/2019     1           4
05/06/2019     0           4
05/07/2019     0           4 
05/08/2019     0           4
05/09/2019     0           4
05/10/2019     0           4

我尝试了whereloc的复杂组合,但无法正常工作:

df['Projection'] = where(df['Date'] < date.today(),df['Actuals'],df.loc[df['Date'] == date.today() - timedelta(days=1),['Actuals']])

您知道我该怎么做吗?

1 个答案:

答案 0 :(得分:0)

where + ffill

df['Date'] = pd.to_datetime(df.Date)
df['Projection'] = df.Actuals.where(df.Date.lt('2019-05-05')).ffill().astype(int)

        Date  Actuals  Projection
0 2019-05-01        2           2
1 2019-05-02        7           7
2 2019-05-03        8           8
3 2019-05-04        4           4
4 2019-05-05        1           4
5 2019-05-06        0           4
6 2019-05-07        0           4
7 2019-05-08        0           4
8 2019-05-09        0           4
9 2019-05-10        0           4