Reputation: 469
i have this table
Day, Average
1, 1200,
3, 1300,
4, 1400,
5, 1500,
what i want :
Day, Average, Tomorrow_average
1, 1200, NaN
3, 1300, 1400
4, 1400, 1500
5, 1500, NaN
Explanation:
Tomorrow Average is Average on the next day
when Day = 1 , Tomorrow Average = NaN , because Day 2 is empty
When Day =3 , Tomorrow Average = 1400, because Average on Day 4 is 1400
How to do that?
df["Tomorrow Average"] = [] # ????????
Upvotes: 1
Views: 37
Reputation: 38425
A very length solution using reindex,
df['Tomorrow_average'] = df.set_index('Day').reindex(np.arange(df.Day.min(), df.Day.max()+1)).Average.shift(-1).reindex(df.Day).reset_index(drop = True)
Day Average Tomorrow_average
0 1 1200 NaN
1 3 1300 1400.0
2 4 1400 1500.0
3 5 1500 NaN
Easier one with same output:
cond = (df['Day'] + 1) == df['Day'].shift(-1)
df['Tomorrow_average'] = np.where(cond, df['Average'].shift(-1), np.nan)
Upvotes: 2