我有一个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
我尝试了where
和loc
的复杂组合,但无法正常工作:
df['Projection'] = where(df['Date'] < date.today(),df['Actuals'],df.loc[df['Date'] == date.today() - timedelta(days=1),['Actuals']])
您知道我该怎么做吗?
答案 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